2016-07-28 4 views
1

Я новичок в AngularJS, и это заводило меня в течение нескольких дней. ПОМОГИТЕ!!! Я скомпрометировал проблему как простой фрагмент кода, как мог .. Я настроил массив с именем indexArray в контроллере, и я хочу вывести значения из него через HTML через функцию pushIndex(). Проблема состоит в том, что функция push добавляет в массив десять одинаковых элементов. Когда я перечисляю массив с оператором {{indexArray}} после нажатия, он выглядит следующим образом:angularjs нажмите на массив, добавив десять элементов

[4,5,6,7,9,9,9,9,9,9,9,9 , 9,9]

Где я только хотел, чтобы один «9» нажал, он добавил десять из них.

То же самое происходит и со строками, цитаты и т.д.

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script> 
var app = angular.module('myDataApp',[]); 
app.controller('myDataController',function($scope, $http){ 
    $scope.indexArray=[4,5,6,7]; 
    $scope.pushIndex=function(num){ 
     $scope.indexArray.push(num); 
    }; 
}); 
</script> 
</head> 
<body> 
<div ng-app="myDataApp" ng-controller="myDataController"> 
{{ pushIndex(9) }} 
{{ indexArray }} 
</div> 
</body> 
</html> 

Извините заранее, если решение больно простой или этот вопрос был задан ранее. Благодаря! -UDM

+0

Этот вид угловых выражений Мент быть побочным эффектом бесплатно и угловой будет вызывать '{{pushIndex (9)}}' выражение много, много раз (оно даже не остановится на 10). См. [Этот вопрос] (например, http://stackoverflow.com/questions/17164230/angular-scope-function-executed-multiple-times). – noppa

ответ

3

Вызов такой функции {{ pushIndex(9) }} будет бесконечно запускать цикл дайджеста.

Это будет работать для вас, а не

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
<script> 
 
var app = angular.module('myDataApp',[]); 
 
app.controller('myDataController',function($scope, $http){ 
 
    $scope.indexArray=[4,5,6,7]; 
 
    $scope.pushIndex=function(num){ 
 
     $scope.indexArray.push(num); 
 
    }; 
 
}); 
 
</script> 
 
</head> 
 
<body> 
 
<div ng-app="myDataApp" ng-controller="myDataController"> 
 
<span ng-init="result=pushIndex(9)">{{result}}</span> 
 
{{ indexArray }} 
 
</div> 
 
</body> 
 
</html>

+0

Спасибо! Это работает как шарм и закончилось пять дней * SHEER FRUSTRATION * :-) – uranusdemilo

+0

Если вы можете проголосовать и выбрать это как ответ на этот вопрос, это было бы очень признательно. –

Смежные вопросы