Ada*_*lin 5 javascript angularjs
所以我刚刚开始使用AngularJS,到目前为止它似乎完全没问题,除了一点点障碍.假设我有两个指令,其中一个需要另一个指令,如下所示:
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'
};
});
Run Code Online (Sandbox Code Playgroud)
在HTML中使用的东西是这样的:
<outer>
<inner></inner>
</outer>
Run Code Online (Sandbox Code Playgroud)
如果outer.html之前加载inner.html,则根本没有问题. <outer>正确转换并分配一个范围和一个控制器,并<inner>接收该控制器就好了.
但是,如果模板以相反的顺序加载,<inner>则在<outer>创建控制器之前链接,并且它失败并显示错误消息"错误:无控制器:外部".
我已经尝试将服务器端加载延迟附加到inner.html,并且只要outer.html首先加载,就不会出现任何问题.类似地,如果我内联outer的模板(即使用template而不是templateUrl),该模板首先可用,并且它都可以很好地工作.
有没有人知道templateUrl在其他指令所需的指令上使用的方法?在我的实际代码中,内部指令可以访问外部控制器是至关重要的,我宁愿选择templateUrl,template因为前者将布局与行为分开,并且即使行为代码增长后也更容易配置模板大.
在此先感谢,如果之前已经提出过这个问题,那就很抱歉 我在Stack Overflow上找不到任何等效的问题.
| 归档时间: |
|
| 查看次数: |
1565 次 |
| 最近记录: |