加载时触发更改

时间:2016-02-02 12:30:39

标签: javascript angularjs

我在页面上呈现了多个复选框,如果我的复选框已经加载检查,我想触发ng-change()

<input type="checkbox" ng-true-value="true" 
      ng-false-value="false"
        ng-change="CustomCheckSelect(someValue)" ng-model="model.defaultCheckBox"/>

使用ng-init导致我出现问题并在控制台中抛出错误,因为其中一些未被检查。

2 个答案:

答案 0 :(得分:5)

试试这个。用ng-if写一个<div></div>并检查&#34; model.defaultCheckBox &#34;是真还是假。从该div调用ng-init中的方法。象 -

<div  
    ng-if="model.defaultCheckBox"  ng-init="CustomCheckSelect(somevalue)">
</div>

答案 1 :(得分:2)

来自ngChange的文档:

  

输入更改时,评估ngChange表达式   值会导致新值提交给模型。

即使您触发ng-change,也可以使用ng-model-options来说明:
 ng-model-options="{updateOn: 'onload default'}"
它不会被评估,因为你没有改变任何值。

如果您不喜欢ngInit解决方案,可以尝试手动调用控制器中的功能。

所以你有一个$scope.model,有些属性由checkboxes处理,让我们说defaultCheckboxsecondaryCheckbox

为避免重复,我会将这些值存储在数组中,然后按条件迭代并调用函数CustomCheckSelect

var checkboxes = ['defaultCheckbox', 'secondaryCheckbox'];

angular.forEach(checkboxes, function(val){
    if ($scope.model[val]) {
        $scope.CustomCheckSelect(val);
    }
})

plunker