所以我刚开始使用AngularJS,除了一个小小的障碍之外,它看起来非常好。比方说,我有两个指令,其中一个需要其他的,像这样:AngularJS:templateUrl推迟控制器的构建,依赖代码中断
<outer>
<inner></inner>
</outer>
如果inner.html
前outer.html
负载,那么有没有:
angular.module('components', [])
.directive('outer', function() {
return {
restrict: 'E',
replace: true,
transclude: true,
scope: {},
link: function(scope) { ... },
controller: function($scope) { ... },
templateUrl: 'outer.html' // Note this
};
})
.directive('inner', function() {
return {
require: '^outer', // And this
restrict: 'E',
...
link: function(scope, element, attrs, outerCtrl) { ... },
templateUrl: 'inner.html'
};
});
在HTML像这样用问题。<outer>
被正确转换,并被分配一个范围和一个控制器,并且<inner>
收到该控制器就好了。
如果模板负载以相反的顺序,然而,<inner>
已创建<outer>
的控制器之前被链接,并且它失败,错误消息‘错误:没有控制器:外’。
我已经尝试将服务器端负载延迟附加到inner.html
,只要首先加载outer.html
,任何地方都没有问题。同样,如果我内嵌outer
的模板(即使用template
而不是templateUrl
),那么该模板将首先变得可用,并且这一切都非常出色。
有谁知道使用templateUrl
的方法是否需要其他指令?在我的实际代码中,至关重要的是内部指令可以访问外部控制器,并且宁愿templateUrl
而不是template
,因为前者将布局与行为分开,并且即使在行为之后也可以更容易地配置模板代码已经变大了。
在此先感谢,并对不起,如果这已经问过;我无法在Stack Overflow上找到任何等效的问题。
我有这个确切的问题,但没有调整优先级帮助(不在1.0.5上,而不是在1.0.7上)。在我的情况下,这是'内在'取决于'外部'的控制器,并且没有简单的方法来打破这种依赖关系,因为我有几个'内在',做一些事情需要一些东西发生在别人身上(这是一种高级手风琴) 。 – ivarni 2013-08-09 12:21:59