如何通過使用表達式綁定將獨立作用域的兩個指令向下傳遞給函數?AngularJS中跨越獨立作用域的鏈式表達式綁定
我有父子關係的兩個指令:
app.directive('parentDir', function(){
return {
scope:{
parentData:'=',
changeRouteParent:'&'
},
templateUrl:'mydir/parentTemplate.html'
};
});
app.directive('childDir', function(){
return {
scope:{
dirData:'=',
changeRoute:'&'
},
templateUrl: 'mydir/childTemplate.html'
};
});
在父模板:
<div class="parentDirClass">
<a ng-click="changeRouteParent({newFoo:parentData.url})>fooLink</a>
<div child-dir ng-repeat="child in parentData.childData" dir-data="child" change-route="???"></div>
</div>
在子模板:
<div class="childDirClass">
<a ng-click="changeRoute=({{newFoo:dirData.url}})">foolink</a>
</div>
嘗試使用該指令在一起:
app.controller('exampleController', function($scope, $state){
$scope.changeRoute = function(newFoo) {
$state.go(newFoo);
};
$scope.theParentData = pData;
});
//parent data
pdata = {url:'/fooUrl',
childData:[{url:'/whatever1'},{url:'/whatever2'}, {url:'/whatever3'}]};
HTML:
<div ng-controller="exampleController">
<div parent-dir parent-data="pData" change-route-parent="changeRoute(newFoo???)"></div>
</div>
隨着表達的一個水平結合的解決方案似乎很容易,你可以很容易地(在兒童指令changeRoute=({{newFoo:dirData.url}})
)識別正在傳遞的變量,但再向上移動的水平我沒有變通過。我怎樣才能繼續通過dirData.url
上鍊的示例控制器調用changeRoute
?