Добавить новую запись в (пустой) массив областей, используя директиву ng-click

0

Моя область не содержит "notYetExistingArray" во время генерации.

Через кнопку я хотел бы добавить массив и первую запись. При каждом последующем нажатии одной и той же кнопки следует добавить еще одну запись.

К сожалению, я не знаю, как подойти к нему.

В настоящее время у меня есть:

<button type="button" ng-click="notYetExistingArray.unshift({})">

Если область уже содержит объект "notYetExistingArray" типа array = [], я могу легко добавить запись с указанной выше функцией.

Кто-нибудь посоветует, как это сделать?

Теги:
arrays
push

3 ответа

1

Вызовите функцию контроллера из директивы ng-click а не пытайтесь сделать все это в своей разметке. Он может включать проверку наличия массива и создание его при необходимости.

<button type="button" ng-click="addThis(thing)">

В контроллере:

ctrl.addThis = function(thing) {
    if (ctrl.myArray === undefined) {
        ctrl.myArray = [];
    }

    myArray.unshift(thing);
};

Обратите внимание, что я использую здесь синтаксис controllerAs, поэтому ctrl может быть $scope.

  • 0
    Это работает. Любой намек на то, как я могу также определить myArray в качестве параметра для функции addThis?
  • 0
    Вы имеете в виду свойство или аргумент функции?
Показать ещё 2 комментария
0

Хорошим способом является привязка функции к директиве ngClick, которая будет выполнять тест, чтобы проверить, существует ли массив.

В вашем контроллере:

function foo(item) {
  //if my array does not exist
  if (!$scope.myArray) {
    //create the array
    $scope.myArray = [];
  }
  //Here, we can add some data to our array, we are sure that the array exist
  $scope.myArray.unshift(item);
}

$scope.foo = foo;

Html:

<h2>Array.length : {{myArray.length}}</h2>
</br>
<button type="button" ng-click="foo({})">Add</button>

Не стесняйтесь проверять Рабочий Plunker

0

Вы можете инициализировать массив, прежде чем делать это, например:

<button type="button" ng-init="notYetExistingArray=[]" ng-click="notYetExistingArray.unshift({})">

проверьте документацию для ng-init https://docs.angularjs.org/api/ng/directive/ngInit

  • 0
    Это нормально до тех пор, пока массив не будет находиться в области видимости при загрузке страницы. Может быть, лучше проверить его существование, чем предполагая.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню