AngularJS指令 - 模板选择不更新Ng模型

时间:2013-11-19 19:37:34

标签: angularjs drop-down-menu angularjs-directive

我的模块中有两个指令。第一个来自https://github.com/banafederico/angularjs-country-select。我用它作为第二个模型。这两个指令表示输入字段,但第二个指令不存储值。链接功能未更新ng-model值。

link: function(scope, elem, attrs) {

    if (!!attrs.ngModel) {
        var assignDivision = $parse(attrs.ngModel).assign;

        elem.bind('change', function(e) {
            assignDivision(elem.val());
        });

        scope.$watch(attrs.ngModel, function(division) {
            elem.val(division);
        });
    }
}

在我的ide(netbeans)中,第二个(从属)下拉列表不会在下拉列表中显示所选值或更新模型。在这个小提琴(http://jsfiddle.net/676mp/)中,显示更新,但模型没有。我不确定如何将模型的值更新为所选值。

1 个答案:

答案 0 :(得分:1)

因为在传递国家/地区值时,您在第二个指令中定义了scope: {...}。这在指令中创建了一个隔离范围,因此元素上的ng-model实际上不起作用,您需要在指令的新隔离范围中创建与父变量的双向绑定

http://jsfiddle.net/676mp/2/

scope: {
    country: '@',
    myDivision: '=division'
}

然后在HTML

<division-select division="myDivision" country="{{myCountry}}"></division-select>

编辑:另请注意,在小提琴中,我更改了指令的模板,以便为自己的范围包含自己的ng-model