Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ng repeat中模拟集合更改_Javascript_Angularjs - Fatal编程技术网

Javascript 在ng repeat中模拟集合更改

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() {

我有一个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.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()
-取决于调用函数的方式。。。