我有一个自定义指令的以下模板。
.directive('myDirective', ['$controller',function($controller) {
return {
templateUrl: 'client/test.ng.html',
scope: true,
controller: ['$scope','$attrs',function($scope,$attrs){
console.log($attrs)
}],
transclude: true,
}
}])
该指令的调用如下
<my-directive view="{{view}}"></my-directive>
<ion-tab ng-if="platform != 'android'" title="{{label}}" icon-off="{{off}}" icon-on="{{on}}" href="#/tab/{{view}}">
<my-directive view="{{view}}"></my-directive>
</ion-tab>
<ion-tab ng-if="platform == 'android'" title="{{label}}" class="tab-item" href="#/tab/{{view}}">
<my-directive view="{{view}}"></my-directive>
</ion-tab>
$attrs.view
为{{view}}
,未插入。 <ion-tab>
将表达式插值到变量值,显示正确的数据。
这对我来说非常困惑。我已将my-directive
放在ion-tab
指令的内部和外部,以防万一存在某种范围问题。
访问表达式的值并使用该值依次调用另一个指令的关键是什么?
背景:
我经历这一切的原因是因为
<ion-nav-view name="tab-{{view}}"></ion-nav-view>
无效。就像my-directive
似乎无法获得```view``的值,但原始未解释的请求。我试图获取值并直接调用此指令。
我似乎能够通过$ scope获得我想要的值。$ parent.view但神秘地设置$ scope.view = $ scope。$ parent.view并在子模板中设置{{view}} DOESNT工作要么!?
更多见解,console.log($ attrs)给出:
$…t.Attributes {$attr: Object, $$element: jQuery.fn.init[1], view: "{{view}}", class: "pane tab-content", navView: "active"}
然而,当这个扩展时,我们已经
$$element: jQuery.fn.init[1]
$$observers: Object
$attr: Object
class: "pane tab-content"
navView: "active"
view: "dash"
__proto__: Object
任何帮助表示感谢,谢谢。
答案 0 :(得分:0)
使用链接功能获取属性值。
.directive('myDirective', ['$controller',function($controller) {
return {
templateUrl: 'client/test.ng.html',
scope: true,
transclude: true,
link: function(scope,element,attrs){
console.log(attrs);
}
}
}])
答案 1 :(得分:0)
我在你的指令中看不到任何HTML,所以我删除了transclude:true
.directive('myDirective', function () {
return {
templateUrl: 'client/test.ng.html',
scope: {
view: '='
},
link: function (scope) {
console.log("view", view);
scope.$watch("view", function (newView, prevView) {
console.log("changed view", scope.view, newView, prevView);
});
}
}
})
答案 2 :(得分:0)
这是一个计时问题,它与指令生命周期内发生某些事情以及它经历的几个阶段有关。 在尽可能少的细节中,这些是阶段:
请注意,在预链接阶段的某个时间将值插入值({{...}}
)会发生(并且它也是一个Angular内置指令)。这意味着:
一个。在控制器实例化期间,值不已解决 湾在后连接阶段,这些值肯定得到了解决 C。根据指令的相对优先级与(深奥的)属性插值指令(具有在100之前)的相对优先级,可以在预链接阶段解析或不解析这些值。
注意:优先级越高意味着预先链接越早发生。
http://mvnrepository.com/artifact/io.reactivex/rxjava做一个公平的工作来解释发生的事情(如果你仔细阅读的话)。