【发布时间】:2015-09-20 22:43:48
【问题描述】:
我的 angularJS 应用程序中有两个自定义指令。一个充当父母,另一个充当孩子。我正在尝试在子指令中访问父级的范围。但我没有得到想要的输出。
<div ng-controller="CountryCtrl">
{{myName}}
<div ng-controller="StateCtrl">
<state nameofthestate="'Tamilnadu'">
<city nameofthecity="'Chennai'"></city>
</state>
</div>
</div>
我的脚本看起来像
var app = angular.module("sampleApp",[]);
app.controller("CountryCtrl",function($scope){
$scope.myName = "India";
});
app.controller("StateCtrl",function($scope){
});
app.directive("state",function(){return {
restrict : 'E',
transclude: true,
scope : { myName : '=nameofthestate'},
template:"** {{myName}} is inside {{$parent.myName}}<br/><ng-transclude></ng-transclude>"
}});
app.directive("city",function(){return {
restrict : 'E',
require:'^state',
scope : { myName : '=nameofthecity'},
template:"**** {{myName}} is inside {{$parent.myName}} which is in {{$parent.$parent.myName }}<br/> "
}});
对应的JSFiddle在https://jsbin.com/nozuri/edit?html,js,output中可用
我得到的输出是
India
** Tamilnadu is inside India
**** Chennai is inside India which is in Tamilnadu
预期的输出是
India
** Tamilnadu is inside India
**** Chennai is inside Tamilnadu which is in India
谁能告诉我我在这里做错了什么?
【问题讨论】:
-
对不起,你的小提琴不适合我。
-
嗨 stackoverflow.com/questions/23437113/… 这可能会帮助你看起来像你想做的事情
-
您可以使用
transclude : 'element'进行自定义嵌入。构造函数在link : function(scope, element, attrs, Ctlr, transclude){}中可用
标签: javascript angularjs angularjs-directive angularjs-scope