我想在视图模板中一起编写视图的控制器。
但是,不会执行带有视图模板的脚本。
我在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 的值。
那么问题是什么?