我在视图中有以下代码:
<li ng-repeat="i in items">{{i.id}}</li>
我希望在ng-repeat
添加/删除新值时动态触发items
。就像在,如果一个新元素被添加到items
的开头那么它应该在开始时动态地呈现给DOM,同样如果一个元素添加到items
的结尾那个项应该是呈现为最后一个列表项。这种DOM的动态变化是否可能是有角度的?
答案 0 :(得分:10)
ng-repeat
应该以这种方式开箱即用。但是,您需要push
或unshift
进入数组,以便启动正确的监视。 Angular将通过引用跟踪数组。
HTML:
<html ng-app="myApp">
<head>
<script data-require="angular.js@*" data-semver="1.2.0" src="http://code.angularjs.org/1.2.0/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-controller="Ctrl">
<h1>Hello Plunker!</h1>
<div ng-repeat="item in items">
{{ item }}
</div>
<button ng-click="add()">Add</button>
</body>
</html>
JS:
var myApp = angular.module('myApp', []);
myApp.controller('Ctrl', function($scope) {
$scope.items = ['hi', 'hey', 'hello'];
$scope.add = function() {
$scope.items.push('wazzzup');
}
});
答案 1 :(得分:1)
您可以使用$ scope的$ rootScope intead来设置属性项。
这种方式属性是全局的,将会更新。
myApp.controller('Ctrl', function($scope, $rootScope) {
$rootScope.items = ['hi', 'hey', 'hello'];
$scope.add = function() {
$rootScope.items.push('wazzzup');
}
});