【发布时间】:2015-06-15 17:36:53
【问题描述】:
我有以下用于自定义指令的模板。
.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}} 不起作用要么!?
更多洞察,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
任何帮助表示赞赏,谢谢。
【问题讨论】:
-
您能分享获取“view”值的脚本吗?这个脚本看起来不错。 $scope.$parent.view 是有效的,因为您在定义指令时设置了 scope : true 。因此,指令原型继承了父作用域
-
@RIYAJKHAN 当然,这里有一个更详细的相关问题,带有 plunker 链接:stackoverflow.com/questions/30854373/…
标签: angularjs angularjs-directive