Javascript 在ng repeat中模拟集合更改
我有一个AngularJS应用程序。初始化控制器时,我的应用程序在作用域上定义了以下JSON数组:Javascript 在ng repeat中模拟集合更改,javascript,angularjs,Javascript,Angularjs,我有一个AngularJS应用程序。初始化控制器时,我的应用程序在作用域上定义了以下JSON数组: $scope.orders= [ { isSelected:false, quantity:0, price:1.33, name:'', description:'' }, { isSelected:false, quantity:0, price:2.54, name:'', description:'' } ]; ... var addOrder = function() {
$scope.orders= [
{ isSelected:false, quantity:0, price:1.33, name:'', description:'' },
{ isSelected:false, quantity:0, price:2.54, name:'', description:'' }
];
...
var addOrder = function() {
$scope.orders.push({ isSelected:false, quantity:0, price:getPrice(), name:getName(), description:getDescription() });
};
我将按如下方式显示订单:
<ul class="list">
<li ng-repeat="order in orders">
<div>
<h2>{{order.name}}</h2>
<p>{{order.description}}</p>
</div>
</li>
</ul>
-
{{order.name}
{{order.description}}
无论何时调用addOrder,都会向order集合中添加一个对象。然而,这种变化并没有反映在UI中。如何使更改反映在UI中
谢谢$scope。更新scope需要$apply()
。当您使用指令、ng-*
事件、$timeout
、$http
等有角度的东西时,它们都是通过此函数预先包装的。当您在Angular的世界之外工作时,您需要在更新范围时开始告诉它
这里有一个很好的概述:
小心不要仅仅把它放在泛型函数中——如果它们被角度事件和普通JS事件调用,你会遇到问题(在$apply中调用$apply)。将$apply()
与所需内容关联:
.directive( 'myDir', [ function() {
return {
link: function( scope ) {
( scope.myFunc = function() {
// scope.$apply(); would cause error
})();
angular.element( window ).bind( 'resize', function(){ scope.$apply( scope.myFunc )});
}
}
}]);
在addOrder
中尝试$scope.$apply()
-取决于调用函数的方式。。。