将ng-model移动到指令中的子元素

时间:2013-08-29 15:23:46

标签: angularjs angularjs-directive

我编写了一个指令,它只是用一组嵌套标签替换一个元素。问题是,我希望ngModel应用于第一个内部元素,而不是外部,这是默认情况下放置的位置。如何强制ng模型应用于内部元素?

首次尝试:

HTML:

<nested-elements ng-model="mymodel"></nested-elements>

指令:

app.directive("nestedElements",function(){
return{
    restrict: 'E',
    replace: true,
    scope:{
        ngModel:'='
    },
    template: '<div class="outer"><div class="inner1">Something</div><div class="inner2"></div></div>'
});

结果:

 <div class="outer" ng-model="mymodel"><div class="inner1">Something</div><div class="inner2"></div></div>

不是我想要的。我希望ng-model应用于inner1 div。

尝试2:

HTML:

<nested-elements model="mymodel"></nested-elements>

指令:

app.directive("nestedElements",function(){
return{
    restrict: 'E',
    replace: true,
    scope:{
        model:'@'
    },
    template: '<div class="outer"><div class="inner1" ng-model="{{model}}">Something</div><div class="inner2"></div></div>'
});

结果:

<div class="outer"><div class="inner1" ng-model="{{ model }}">Something</div><div class="inner2"></div></div>

这显然不是我想要的。

如何让ng-model适用于inner1?

1 个答案:

答案 0 :(得分:4)

尝试使用这些更改尝试2:

scope:{
    model:'=ngModel'
}

<div class="outer"><div class="inner" ng-model="model">...

小提琴:http://jsfiddle.net/7zBnC/1/