use*_*365 7 checkbox angularjs
我有一个名为Case的类,它包含一个executionSteps列表.每个executionStep都有一个名为enabled的布尔属性.我试图在HTML方面进行设置,但它从未在JS方面进行更新.HTML方面
<td>
<input type="checkbox"
ng-checked="acase.executionSteps[0].enabled"
ng-model="aa" ng-change="updateCaseExecutionStep('{{study.id}}','{{acase.id}}','{{acase.executionSteps[0].id}}','{{acase.executionSteps[0]}}')"/>
</td>`
Run Code Online (Sandbox Code Playgroud)
在控制器端,我有如下所示定义的函数updateCaseExecutionStep
$scope.updateCaseExecutionStep = function(studyId,caseId,executionStepId,executionStep){
...
...
}
Run Code Online (Sandbox Code Playgroud)
问题是当我更新我的复选框或甚至手动更新executionStep的enabled属性时
$scope.updateCaseExecutionStep = function(studyId,caseId,executionStepId,executionStep){
executionStep.enabled = true;
...
}
Run Code Online (Sandbox Code Playgroud)
我没有看到任何变化.在JS中传递的executionStep的enabled属性不会更改.请帮忙.
我是否必须在HTML方面以某种方式进行修改?
Mik*_*ala 14
你试图强迫太复杂的解决方案.首先,你并不需要ng-checked,也不ng-change当您使用ng-model.
假设你有以下控制器
app.controller('MainCtrl', function($scope) {
$scope.case = {
caseId: 0,
steps: [
{ id: 1, name: 'First step', enabled: true },
{ id: 2, name: 'Second step', enabled: false },
{ id: 2, name: 'Third step', enabled: false }]
};
});
Run Code Online (Sandbox Code Playgroud)
和相关的HTML
<div ng-repeat="step in case.steps">
<input type="checkbox" ng-model="step.enabled"> {{ step.name }}</input>
</div>
Run Code Online (Sandbox Code Playgroud)
这就是全部!
示例插入http://plnkr.co/edit/QjD91l
编辑:
如果您需要根据选择进行一些处理,那么是的,您可以添加ng-change到input控件中.然后HTML变成了
<input type="checkbox" ng-model="step.enabled" ng-change="stateChanged(step)"> {{ step.name }}</input>
Run Code Online (Sandbox Code Playgroud)
在控制器中
$scope.stateChanged = function(step){
console.log('Changed step id:' + step.id + ' enabled state to ' + step.enabled;
};
Run Code Online (Sandbox Code Playgroud)