【问题标题】:Dynamically change checkboxes with Angularjs使用 Angularjs 动态更改复选框
【发布时间】:2016-01-12 16:29:28
【问题描述】:

我有以下复选框:

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 取消选中该复选框?

【问题讨论】:

  • 那么当你选中它时,你希望它在保存后取消选中?
  • 不,只有当 SSE 的值返回 false 我希望取消选中它,如果它返回 true 并且未选中复选框...我希望它被选中...
  • 我可能有一点时间,但什么是 SSE?这是您从 save 函数中调用的服务之一吗?
  • SSE 是服务器发送的事件......在我的例子中,来自 API 的实时更新。 SSE 向客户端发送消息,允许我实时更新值,类似于 Web 套接字。
  • 啊,对,当然。唔。不过,您如何将其与角度挂钩?如果使用数据流或套接字,您是否在所述流的回调中更新控制器变量?

标签: javascript angularjs checkbox


【解决方案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 解决了我的问题。

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

【讨论】:

  • 这对我来说实际上也很好。我尝试添加 ng-checked 和 ng-model 并尝试进行所有操作。
【解决方案2】:

试试下面的复选框

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

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

【讨论】:

    【解决方案3】:

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

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

    Ng 检查可以带一个表达式。因此,也许可以创建一个从您需要发生的任何事件中返回 false 的函数?

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

    然后是你的函数

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

    【讨论】:

    • 没什么,它不会从复选框中删除选中的值。
    猜你喜欢
    • 2015-06-12
    • 2018-02-21
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-11
    • 1970-01-01
    • 2017-10-18
    相关资源
    最近更新 更多