AngularJS指令模板ng重复有趣的替换
AngularJS directive templates ng-repeat funny substitution
我很难使用angularjs指令模板。{{变量}}在ng重复中以一种非常奇怪的方式工作
<div ng-controller="MyCtrl">
<h2>here i am</h2>
<button type="button" ng-click="addItem()" class="btn btn-primary">Howdy</button>
<div ng-repeat="item in items track by $index" itemlist></div>
</div>
<script type="text/ng-template" id="template.html">
<div>
Howdy {{item.itemNum}} {{item.name}}
</div>
</script>
var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', function ($scope) {
$scope.count = 0;
$scope.items = [];
var newItem = {
itemNum: 0,
name: "New"
};
$scope.addItem = function () {
newItem.itemNum = $scope.count;
console.log('adding item ' + newItem.itemNum);
$scope.items.push(newItem);
$scope.count += 1;
};
});
myApp.directive('itemlist', function ($compile) {
return {
templateUrl: 'template.html',
};
});
我创建了一个jsfiddle,在这里显示我的问题:http://jsfiddle.net/dk253/8jm5tjvf/23/.
我错过了什么或做错了什么?
谢谢!
原因是您每次都在更新同一对象引用(newItem
)上的属性。所以它会更新数组中的所有其他项,因为它们都指向同一个对象,或者换句话说,它们都是相同的。相反,您可以使用angular.copy获取对象的副本,然后推送该项目。
var item = {
itemNum: 0,
name: "New"
};
$scope.addItem = function () {
var newItem = angular.copy(item); //Get the copy
newItem.itemNum = $scope.count;
Fiddle
相关文章:
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 无法用tr替换表中的指令
- 当指令模板的各个部分存在各自的交叉内容时,替换它们
- AngularJS指令模板ng重复有趣的替换
- AngularJS SVG 指令,不推荐使用替换
- 如何实现 Angular 指令来替换元素,但仅限于某些情况
- 替换指令中的值而不替换整个指令
- 为什么将 ng-select 替换为自定义指令会导致$http请求不会每隔一段时间发送一次
- 正则表达式在指令中替换为 html 标记
- 控制 AngularJS 如何替换 ngInclude 或自定义指令
- 如何使用带有替换的模板覆盖/补充指令中的ng类:true
- 为什么“替换:真”在 AngularJS 指令中被弃用
- 用于替换用户输入中的字符的角度指令
- 如何替换Angular指令中不推荐使用的替换属性
- 替换“;templateUrl”:路径带有“;模板”:使用gump的角度指令的内容
- 用于替换文本的 Angularjs 指令
- 在指令's链接中替换angular元素html
- 如何让angular指令包含&替换另一个指令
- AngularJS指令:将属性值直接替换到模板中
- SVG的角度替换指令(结果在DOM中,但未显示)