在ng-repeat中使用ng-model

时间:2014-02-27 10:06:07

标签: javascript angularjs

我用模板创建了angular指令:

<div class="directiveclass">
   <div ng-repeat="i in items">
       <input type="radio" ng-model="myvalue" value="{{$index}}">
   </div>    
</div>

ng-model“myvalue”是指令局部范围的一部分:

.directive('mydirective', function()
{
    return {
        templateUrl: "path",
        scope: {},
        link : function(scope, el, attr)
        {
            scope.myvalue = 0;   
            scope.$watch('myvalue', function()
            {
                console.log('myvalue changed');
            });
        }
    };
}

我点击单选按钮元素,但“myvalue”值永远不会改变。

有什么想法吗?

示例代码:http://jsfiddle.net/r5jGL/

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。 由于ng-repeat创建了新范围,我已将ng-model值更改为 $ parent.myval 以访问指令范围。

答案 1 :(得分:0)

在HTML中:

<input type="radio" ng-model="$parent.myvalue" value="{{$index}}">

这使您可以访问ng-model,因为ng-repeat已经创建了自己的范围。

不需要更改指令。