AngularJS 延迟加载在 1.3.x 迁移后中断,获取参数'XXCntr'不是一个函数,未定义



嗨,我们目前懒惰地加载 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 找不到控制器功能

最新更新