我需要根据键入的值和使用html输入提交的值构建ng-repeat列表。它可以工作,我可以使用ng-repeat从输入中返回项目,但是当编辑下一个项目的输入时,输入值仍然绑定到ng-repeat中的值,然后更改该值而不是添加全新的。我确定我错过了一些简单的东西,但此刻却停滞不前。
如何在每次ng-click时添加未绑定到输入的新项目?
HTML:
<div ng-controller="MyCtrl">
Hello, {{name}}!
<br/>
<input ng-model='newitem1' />
<input ng-model='newitem2' />
<input ng-model='newitem3' />
<button ng-click='add()'>Add</button>
<br/>
<b>Items Added Below</b>
<div select-last ng-repeat='item in items'>
<div ng-model='item' id='item-{{$index}}' class='input-{{$index}}'>{{newitem1}} {{newitem2}} {{newitem3}}</div>
</div>
使用Javascript:
var myApp = angular.module('myApp',[]);
myApp.directive('selectLast', function () {
return function (scope, element, attrs) {
if (scope.$last=== true) {
console.log("the last element is here");
}
}
});
function MyCtrl($scope) {
$scope.name = 'Please try entering something and click Add button';
$scope.items = [];
$scope.newitem1 = '';
$scope.newitem2 = '';
$scope.newitem3 = '';
$scope.add = function(){
$scope.items.push($scope.newitem1,$scope.newitem2,$scope.newitem3);
}
}
答案 0 :(得分:1)
您可以使用angular.copy()
克隆该项目,因此它是数据的副本,但不是对它的直接引用。
这将允许您不断添加新项目。
function MyCtrl($scope) {
$scope.name = 'Please try entering something and click Add button';
$scope.items = [];
$scope.newitem1 = '';
$scope.newitem2 = '';
$scope.newitem3 = '';
$scope.add = function(){
var item1 = angular.copy($scope.newitem1),
item2 = angular.copy($scope.newitem2),
item3 = angular.copy($scope.newitem3);
$scope.items.push(item1, item2, item3);
}
}
答案 1 :(得分:0)
我意识到我正在使用输入模型进行表达。
{{newitem1}}
而不是
{{item.newitem1}}
固定