【问题标题】:radio button directive not binding the ngModel单选按钮指令未绑定 ngModel
【发布时间】:2014-03-24 01:25:15
【问题描述】:

我正在尝试创建一个通用的 radioButton 指令,它将从控制器中获取选项进行显示:

<cs-radio-field options="gender" ng-model="genderValue"></cs-radio-field>

选项会是这样的

$scope.gender = { label: "Gender", required:true,  valueList: [{ text: "Male", value: "yes" },{text:"Female", value:"no"}] };

指令定义为:

app.directive("csRadioField", function () {
    var templateHtml = function () {
        return '<div ng-form="myform">' +
                '<div class="control-group" class="{{options.class}}">' +
                    '<div class="control-label">{{options.label || "Radio"}} {{ options.required ? "*" : ""}} </div>' +
                    '<div class="controls">' +
                        '<div class="radio" ng-repeat="(key, option) in options.valueList">' +
                            '<label> <input type="radio" name="myfield" ng-value="option.value" ng-model="ngModel" ng-required="options.required" />{{option.text}} </label>' +
                        '</div>' +
                        '<div class="field-validation-error" data-ng-show="myform.myfield.$invalid && myform.myfield.$dirty"> ' +
                            '<div data-ng-show="myform.myfield.$error.required">{{options.label}} is required!!!</div>' +
                        '</div>' +
                    '</div>' +
                '</div>' +
            '</div>';
    };

    return {
        scope: { options: '=', ngModel: '=' },
        required: ['ngModel', '^form'],
        restrict: 'E',
        template: templateHtml,
    };
});

但是 ngModel 在父作用域中没有绑定。主要是因为 ng-repeat 创建了新作用域。

如何解决这个问题?

插件链接:http://plnkr.co/edit/myS5hXwxjoDEqQI2q5Q7?p=preview

【问题讨论】:

    标签: angularjs angularjs-directive angularjs-scope


    【解决方案1】:

    在你的模板中试试这个:

    ng-model="$parent.ngModel"
    

    DEMO

    ng-repeat 创建子作用域 是正确的。您实际上是绑定到子作用域的属性。

    【讨论】:

    • 完美,它的工作......我明白它分配给父范围......但如果我在其他指令中使用这个指令 - 这会产生问题吗??
    • @HarishR:应该没问题,这里的$parent就是你current指令的作用域。
    猜你喜欢
    • 2017-08-20
    • 2014-12-19
    • 1970-01-01
    • 2017-07-22
    • 2019-02-05
    • 2020-10-14
    • 1970-01-01
    • 2020-09-13
    • 2011-01-20
    相关资源
    最近更新 更多