使用Angularjs动态更改复选框

时间:2015-09-04 13:21:38

标签: javascript angularjs checkbox

我有以下复选框:

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的复选框?

3 个答案:

答案 0 :(得分: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解决了我的问题。

现在一切正常......(即使我还不知道为什么......哈哈)

答案 1 :(得分:1)

尝试下面的复选框

<input type="checkbox" ng-model="yourmodel" ng-true-value='true' ng-false-value='false' class="checkbox" id="schedule_active"/>

已经提供了答案,只是为了让其他人快速复制粘贴,我已经添加了上面的代码。

答案 2 :(得分:0)

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

  

如果表达式在里面,则设置元素的checked属性   ngChecked是真的。

Ng check可以表达。那么也许创建一个函数,从你需要发生的任何事件中返回false?

DECLARE @FromDate AS DATE='04-Aug-2015'
DECLARE @ToDate AS DATE='05-Aug-2015'

SELECT 
    A.LBrCode AS BranchCode,
    (SELECT B.Name 
     FROM D001003 B 
     WHERE A.LBrCode = B.PBrCode) AS BranchName,
    C.PrdCd AS Product,
    SUM(D.FcyTrnAmt) AS Amount
FROM 
    D009022 A 
INNER JOIN 
    D009021 C ON substring(A.PrdAcctId, 1, 8) = C.PrdCd
              AND A.LBrCode = C.LBrCode
LEFT JOIN 
    D009040 D ON A.PrdAcctId = D.VcrAcctId
              AND substring(D.VcrAcctId, 1, 8) = C.PrdCd
              AND A.LBrCode = D.LBrCode
WHERE 
    A.AcctStat <> 3 
    AND A.DateOpen >= @FromDate 
    AND A.DateOpen <= @ToDate
    AND C.ModuleType = 11
    AND D.DrCr = 'D' 
    AND D.CanceledFlag <> 'C'
GROUP BY 
    A.LBrCode, C.PrdCd
ORDER BY 
    A.LBrCode

UNION ALL

SELECT 
    A.LBrCode AS BranchCode,
    (SELECT B.Name FROM D001003 B WHERE A.LBrCode = B.PBrCode) AS BranchName,
    C.PrdCd AS Product,
    SUM(A.ActTotBalFcy) AS Balance
FROM 
    D009022 A 
INNER JOIN 
    D009021 C ON substring(A.PrdAcctId, 1, 8) = C.PrdCd
              AND A.LBrCode = C.LBrCode
WHERE 
    C.ModuleType = 11
    AND A.AcctStat <> 3 
    AND A.DateOpen >= @FromDate 
    AND A.DateOpen <= @ToDate
GROUP BY 
    A.LBrCode, C.PrdCd
ORDER BY 
    A.LBrCode

然后你的功能

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