假设我的祖父母组件/指令的范围变量声明如下:$scope.g = { // methods here };
在我的每个嵌套组件/指令的控制器中,我指的是$scope.$parent.$parent.g
之类的变量,然后从g
调用某些函数,例如$scope.fromNgClick = function() { $scope.$parent.$parent.g.run(); };
。这很好用(虽然我想更好地引用祖先,比如别名?而不是$ parent链)。
当我将一个组件从它的祖父母组件拖动到另一个祖父母兄弟组件(得到那个?)时,同样的$scope.fromNgClick = function() { $scope.$parent.$parent.g.run(); };
仍然指向原始范围,而不是像我需要它那样的新范围。因此,单击相同的ng-clickable元素仍会触发先前祖父母范围内的run()
方法。
这一切都有道理;但是,有没有办法让范围指向新的删除位置祖父母范围呢?
谢谢!
修改
标记类似于以下内容,其中<g-directive>
被视为祖父母,因为它在其模板上使用transclude
,最终包装子指令:
<g-directive>
<child-directive></child-directive>
<another-child-directive></another-child-directive>
<yet-another-child-directive></yet-another-child-directive>
</g-directive>
<g-directive>
<c-child-directive></c-child-directive>
<c-another-child-directive></c-another-child-directive>
<c-yet-another-child-directive></c-yet-another-child-directive>
</g-directive>
这就是子指令/组件$scope.$parent.$parent.g
的原因。
可以拖动子组件然后将其放入另一个<g-directive>
,但它的控制器仍指向其原始祖父(原始<g-directive>
的控制器范围变量)。我希望它指向新的祖父母被放入,基本上将其范围重置为新放置的范围。
答案 0 :(得分:0)
async someFunction(listings, function() {
for (var i in listings ) {
var listing = listings[i];
await delay(5000);
await asyncFunction(listing);
console.log('Done');
}
});
每个人都可以拥有<g-directive some-attr=1>
<child-directive></child-directive some-attr=1>
<another-child-directive></another-child-directive some-attr=1>
<yet-another-child-directive></yet-another-child-directive some-attr=1>
</g-directive>
<g-directive some-attr=2>
<child-directive></child-directive some-attr=2>
<another-child-directive></another-child-directive some-attr=2>
<yet-another-child-directive></yet-another-child-directive some-attr=2>
</g-directive>
和broadcast
的不同听众。
如果通过emit
重复指令,则ng-repeat
可以是该属性。
希望这可以帮助。