如何清除按钮点击事件的ng-init值?

时间:2017-06-07 13:04:02

标签: angularjs

这是我的代码,我想重置 items.total 模型。 它无法正常工作

<div ng-init="items.total">
   <ul ng-repeat="x in Arr">
      <li ng-init = "items.total.carat = items.total.carat + x.Carat">{{x.Carat}}</li>
   </ul>
</div>
<label>{{items.total.carat}}</label>
<input type="button" ng-click="GetNewData()" value="FETCH">
----------------------------------------------
script :

$scope.GetNewData = function(){
   $scope.items = {};
   -- code --
};

2 个答案:

答案 0 :(得分:0)

您可以在ng-click中添加多个来电,如下所示

<input type="button" ng-click="GetNewData(); items.total = null;" value="FETCH">

除此之外,你可以在功能中传递items并在那里清除

<input type="button" ng-click="GetNewData(items); items.total = null;" value="FETCH">

除此之外,您可以只调用方法并在完成所有操作后在控制器中清除它

像     

$scope.GetNewData = function(){
   /* do necessary operation */
   $scope.items = {}; //empty it out
};

答案 1 :(得分:0)

ng-init用于列表中的总项目是滥用该指令:

  

[ng-init]指令可能会被滥用,以在模板中添加不必要的逻辑量。 ngInit只有少数适​​当用途,例如对ngRepeat的特殊属性进行别名,如下面的演示所示;并通过服务器端脚本注入数据。除了这几种情况,你应该使用控制器而不是ngInit来初始化作用域上的值。

     

— AngularJS ng-init Directive Reference

而是使用JavaScript函数来计算值:

$scope.computeTotal = function() {
    $scope.items.total.caret = 0;
    for (let i=0; i<$scope.Arr.length; i++) {
       $scope.items.total.caret += $scope.Arr[i];
    };
};

AngularJS将关注点分为模型,视图和控制器。模板(或视图)应仅呈现模型。 Controller应根据需要创建和更新模型。这个separation of concerns简化了应用程序的开发和维护。