2015-09-04 68 views
2

我有以下复选框:动态更改复选框与Angularjs

input(type='checkbox', ng-model='auto', ng-checked='auto', ng-change='save()') 

当我从方法保存在ng-change它正确保存自动值,但应用也听SSE(服务器发送事件)来更新值:

一个简单的例子:

$scope.$watch(Auto.getNewValue, function (newAutoValue) { 
    if (newAutoValue !== null) { 
     $scope.auto = newAutoValue; 
    } 
}); 

即使从$watch值为false但之前我检查过,复选框仍然被选中。我如何取消选中与AngularJS的复选框?

+0

所以当你检查它时,你希望它在保存后取消选中? – jh3y

+0

不,只有当来自SSE的值返回false我希望取消选中它,如果它返回true并且复选框没有被选中,那么它也是一样的...我希望它被检查... –

+0

我可能有一个时刻,但是什么是SSE?这是你在'save'函数中调用的服务之一吗? – jh3y

回答

1

我解决它只是增加了更多的ng属性我输入复选框。它看起来像现在这样:

input(type='checkbox', ng-model='auto', ng-true-value='true', ng-false-value='false', ng-checked='auto', ng-change='save()') 

ng-true-valueng-false-value解决了我的问题。

现在一切工作正常...(即使我仍然不知道为什么...笑)

+0

这实际上对我来说也很好。我尝试添加ng-checked和ng-model并尝试执行所有操作。 Naveen

0

https://docs.angularjs.org/api/ng/directive/ngChecked

设置元素所检查属性时,如果内部 ngChecked表达是truthy。

吴检查可以采取一个表达式。所以也许可以创建一个函数,从任何需要发生的事件中返回false。

input(type='checkbox', ng-model='auto', ng-checked='checkedFunction()', ng-change='save()') 

,然后你的函数

function checkedFunction() 
{ 
    //do stuff 
    return false; 
} 
+0

尝试一下,谢谢。 –

+0

没有,它不会从复选框中删除选中的值。 –

1

试试下面的复选框

<input type="checkbox" ng-model="yourmodel" ng-true-value='true' ng-false-value='false' class="checkbox" id="schedule_active"/> 
因为已经提供答案

,只需要有为他人快速复制粘贴,我已经添加了上面的代码。