嗨,我们目前懒惰地加载 AngularJS 片段/模板,一切正常......直到我们开始迁移到 1.3。现在我们得到了
参数"WhateverCntr"不是一个函数,未定义
问题是这些片段包含 Angular 模板代码和一些脚本......最常见的是控制器或类似的东西。
我们使用的javascript如下:
(function(angular) {
'use strict';
angular.module('our.ui').directive('fwDynamic', [
'$compile', '$http', function($compile, $http) {
return {
restrict: 'EA',
scope: {
action: '@',
ajaxModel: '='
},
link: function(scope, element, attrs) {
scope.$watch('ajaxModel', function(data) {
$http({
method: 'POST',
url: scope.action,
data: data,
cache: false
}).then(function(response) {
$compile(response.data)(scope, function (clonedElement, scope) {
element.html('');
element.append(clonedElement);
});
});
});
}
};
}
]);
})(angular);
有谁知道它为什么会破裂?我们似乎找不到问题所在。
1.3 中有一个重大更改,即无法通过全局范围的函数引用控制器。必须按在模块上创建控制器时使用的名称引用控制器。如果未将控制器显式添加到模块,则现在必须执行此操作。
无效:
function MyCtrl(){}
<div ng-controller="MyCtrl"></div>
有效:
function MyCtrl(){}
angular.module('myModule').controller('myCtrlName', MyCtrl);
<div ng-controller="myCtrlName"></div>
你也可以参考这个问题/答案:角度 1.3 找不到控制器功能