angular - 在ng-view中追加并执行脚本,然后在其中附加模板内容

时间:2016-07-19 17:49:20

标签: javascript jquery angularjs ngroute ng-view

由于脚本无法加载到模板中,由于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>

最后真正的问题是:为什么会发生这种情况?这就像 在执行之后执行或者我不知道,因为,查看控制台:

Console

Angular存在但控制器未及时添加。 我做错了吗?这种行为允许吗?这次旅行能有人带领我吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试将控制器脚本包含在视图中?不明白为什么以及它背后的逻辑是什么?您拥有模板控制器,原因是将view / DOM及其背后的业务逻辑分开。

在角度中,script标记 将元素的内容加载到$ templateCache ,以便ngInclude,ngView或指令可以使用该模板因此它不会与正常加载的<script>标记相同。

他们还声明元素类型必须指定为text / ng-template ,并且必须通过以下方式指定模板的缓存名称元素的id,然后可以用作指令的templateUrl。

所以你不是按照角度的意图使用脚本标记。

为什么不将控制器包含在js文件中并从根HTML加载,或者使用requirejs或类似的库。