我有以下模板的自定義指令。AngularJS我的自定義指令不能訪問屬性,但它似乎其他自定義指令可以
.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}}
,uninterpolated。 <ion-tab>
將表達式內插到變量值中,顯示正確的數據。
這對我來說很困惑。我已經在ion-tab
指令的內部和外部放置了my-directive
,以防出現某種範圍問題。
訪問表達式的值並使用該值反過來調用另一個指令的關鍵是什麼?
背景:
我經歷這一切的原因是因爲
<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
任何幫助表示讚賞,感謝。
你可以請分享「查看」值獲取的腳本嗎?這個腳本看起來很好。 $ scope。$ parent.view是工作的,因爲你在定義你的指令時設置了scope:true。因此,該指令原型繼承了父範圍 –
@RIYAJKHAN當然,這裏是一個相關的問題更詳細w/plunker鏈接:http://stackoverflow.com/questions/30854373/angularjs-cannot-interpolate-attribute-from-第一個指令到第二個w-pl – Babak
我已更新http://stackoverflow.com/questions/30854373/angularjs-cannot-interpolate-attribute-from-first-directive-to-a-second-w -pl/30859861#30859861。這裏是最後一個小提琴.http://plnkr.co/edit/WoglpCyQmg9WYs5MrKYw?p = preview –