2
我有一個角度指令顯示模式窗口。它可以接受HTML內容之間內聯的內容,也可以指向模板。當我使用這個指令時,我似乎可以正常訪問$scope
,但是當我使用這個指令的translluded內聯版本時,我沒有。角度指令範圍 - 模板包括vs內聯transclude
我在這裏錯過了什麼?我製作了一個具有相同行爲的小樣本指令。
演示:http://fiddle.jshell.net/ahezfaxj/2
內聯內容使用
<ang-test show="showBoolean">
<p>Content here!</p>
</ang-test>
模板用法
<ang-test show="showBoolean" template="'myTemplate.html'"></ang-test>
指令
app.directive("angTest", function() {
return {
template: function() {
return "<div class='test-container'>" +
" <div ng-if='show && template' ng-include='template'></div>" +
" <div ng-if='show && !template' ng-transclude></div>" +
"</div>";
},
restrict: "E",
replace: true,
transclude: true,
scope: {
template: "@",
show: "="
},
link: function ($scope, $element, attrs) {
if(value){
$element[0].style.display="block";
}else{
$element[0].style.display="none";
}
}
};
});
是的,但我怎麼能僅僅通過傳遞整個範圍,而無需將其指定指令裏面?我不想在指令中爲我的項目指定所有可能的範圍變量。 –
您不必創建獨立的範圍...(只是不要在您的指令中定義它),但是當您創建指令時必須非常小心,因爲請看這裏可能會發生什麼http://fiddle.jshell。淨/ ahezfaxj/5 / – sylwester