我在视图中有以下代码:
<li ng-repeat="i in items">{{i.id}}</li>
我想要的 ng-repeat
在添加/删除新值时动态触发 items
。如同,如果添加一个新元素开始 items
那么它应该在开始时动态地呈现给DOM,并且类似地如果元素被添加到结尾 items
该项应该呈现为最后一个列表项。 DOM的这种动态变化是否有可能?
我在视图中有以下代码:
<li ng-repeat="i in items">{{i.id}}</li>
我想要的 ng-repeat
在添加/删除新值时动态触发 items
。如同,如果添加一个新元素开始 items
那么它应该在开始时动态地呈现给DOM,并且类似地如果元素被添加到结尾 items
该项应该呈现为最后一个列表项。 DOM的这种动态变化是否有可能?
ng-repeat
应该这样开箱即用。但是,你需要 push
要么 unshift
进入阵列,以便正确的手表射击。 Angular将通过引用跟踪数组。
这里有一个 工作的plunker。
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');
}
});
您可以使用$ scope的$ rootScope intead来设置属性项。
这样,该属性是全局的,将会更新。
myApp.controller('Ctrl', function($scope, $rootScope) {
$rootScope.items = ['hi', 'hey', 'hello'];
$scope.add = function() {
$rootScope.items.push('wazzzup');
}
});