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