由于脚本无法加载到模板中,由于Angular的jQLite没有编写实现它,我决定在Angular之前添加jQuery库,因为它检查jQuery存在,瞧!,它的工作原理。但是,我在这里问一个问题的事实,意味着有一个'但是',所以,脚本在内容加载之前不会执行。当然,我用路线做了一个小技巧。
在模块的配置部分,我做了这个:
$routeProvider
.when("Business/:Context/:View?", {
templateUrl: function (url) {
return "Contexts/" + url.Context + "/" + (url.View || url.Context) + ".html";
}
});
然后我们说我们设置路径到“#/ Business / Test”他在“/ Contexts / Test”上找到一个名为Test.html的文件,对吧诶!我们说Test.html的内容就是这个。
<script>
(function(ng){
console.log(ng)
ng.module('MyApp').controller('TestController', function ($scope, $route, $routeParams, $location, $http, $mdDialog) {
$scope.name = "TestController";
$scope.params = $routeParams;
$scope.name = "John";
});
})(angular)
</script>
<div ng-controller="TestController">
Hola {{ name }}
</div>
最后真正的问题是:为什么会发生这种情况?这就像 在执行之后执行或者我不知道,因为,查看控制台:
Angular存在但控制器未及时添加。 我做错了吗?这种行为允许吗?这次旅行能有人带领我吗?
答案 0 :(得分:0)
您是否尝试将控制器脚本包含在视图中?不明白为什么以及它背后的逻辑是什么?您拥有模板和控制器,原因是将view / DOM及其背后的业务逻辑分开。
在角度中,script标记 将元素的内容加载到$ templateCache ,以便ngInclude,ngView或指令可以使用该模板因此它不会与正常加载的<script>
标记相同。
他们还声明元素的类型必须指定为text / ng-template ,并且必须通过以下方式指定模板的缓存名称元素的id,然后可以用作指令的templateUrl。
所以你不是按照角度的意图使用脚本标记。
为什么不将控制器包含在js文件中并从根HTML加载,或者使用requirejs
或类似的库。