【问题标题】:AngularJS: Initial checkbox value not in modelAngularJS:初始复选框值不在模型中
【发布时间】:2013-09-21 22:54:50
【问题描述】:

我有一个带有这样一个复选框的表单:

<input type="checkbox" name="publish" id="publish" ng-model="data.publish" ng-true-value="Yes" ng-false-value="No"/>

现在我想将其初始值'No'(因为未选中)绑定到模型,而无需单击复选框。除了在控制器中手动设置模型值或使用ngInit之外,还有其他方法吗?

我的脚本应该适用于不同的形式,因此手动设置模型变量是不可行的。而ngInit 方法似乎相当不优雅。

【问题讨论】:

    标签: javascript angularjs checkbox coffeescript


    【解决方案1】:

    也许是一个像这样工作的指令:

    <input type="checkbox" ng-model="..." init-cb ... />
    

    下面的代码应该做到这一点:

    m.directive("initCb", function() {
        return {
            require: ["ngModel"],
            scope: false,
            link: function(scope, element, attrs, controllers) {
                var ngModel = controllers[0],
                if( element[0].checked ) {
                    ngModel.$setViewValue(attrs.ngTrueValue || true);
                }
                else {
                    ngModel.$setViewValue(attrs.ngFalseValue || false);
                }
            }
        };
    });
    

    【讨论】:

    • 嗯,有可能,但类似于ng-init="data.publish=..."
    • 同意,这是ng-init=... 的更简洁形式。但是,由于在初始化时 model 控制表单,我想不出另一种解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多