Angular js:在视图模板中加载控制器

时间:2015-09-28 04:21:22

标签: angularjs view angularjs-directive controller

我想在视图模板中一起编写视图的控制器。

但是,不会执行带有视图模板的脚本。

我在AngularJS: How to make angular load script inside ng-include?采用了Paolo Moretti的方法来执行视图模板中的js。

app.directive('script', function (){
    return {
        restrict: 'E',
        scope: false,
        link: function (scope, elem, attr) {
            if (attr.type === 'text/javascript-lazy') {
                var code = elem.text();
                var f = new Function(code);
                f();
            }
        }
    };
});

普通脚本运行正常:例如警报( 'ABC');

但是当我在视图模板中声明一个控制器时,它不起作用。视图模板使用在。中定义的控制器。

<script type="text/javascript-lazy">
  alert("app="+app);
  app.controller('serviceCtrl',function($scope,$routeParams){
    $scope.services=['ser1','serv2','serv3'];
    $scope.theService=$scope.services[$routeParams.id];  
  });
</script>

<div id="servicesbox" ng-controller="serviceCtrl">
    <div id="serviceheader"><span class="h1">Services</span></div>
    <p>{{theService}}</p>
</div>

在视图中加载上述模板时,它首先提醒我“app = [object Object]”,这意味着“app”未定义。然后我在控制台中收到错误:

  

“错误:[ng:areq]   http://errors.angularjs.org/1.3.14/ng/areq?p0=serviceCtrl&p1=not%20a
  1.#QNAN0unction%2C%20got%20undefined

当我将控制器定义移动到网站加载的主js文件时,控制器工作正常。并显示 theService 的值。

那么问题是什么?

0 个答案:

没有答案