Моя область не содержит "notYetExistingArray" во время генерации.
Через кнопку я хотел бы добавить массив и первую запись. При каждом последующем нажатии одной и той же кнопки следует добавить еще одну запись.
К сожалению, я не знаю, как подойти к нему.
В настоящее время у меня есть:
<button type="button" ng-click="notYetExistingArray.unshift({})">
Если область уже содержит объект "notYetExistingArray" типа array = [], я могу легко добавить запись с указанной выше функцией.
Кто-нибудь посоветует, как это сделать?
Вызовите функцию контроллера из директивы 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
.
Хорошим способом является привязка функции к директиве 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
Вы можете инициализировать массив, прежде чем делать это, например:
<button type="button" ng-init="notYetExistingArray=[]" ng-click="notYetExistingArray.unshift({})">
проверьте документацию для ng-init https://docs.angularjs.org/api/ng/directive/ngInit