angularjs - 错误 : No controller in directive

标签 angularjs angularjs-directive angularjs-ng-repeat

亲们, 我是 AngularJS 新手,我正在尝试使用 Angular 创建绑定(bind)到模型层次结构的基本 HTML 层次结构。我的顶级模块如下所示:

angular.module('fooApp', ['ngResource', 'myList']) 在我页面的根 div 中声明为 ng-app="fooApp"。

然后我的页面中有如下所示的 HTML:

<my-item-list/>

我有第二个模块,看起来像这样:

var myList = angular.module('myList', []);
myList.directive('myItemList', function factory() {
    var directiveDefinitionObject = {
        priority: 0,
        templateUrl: '/assets/partials/my-item-list.html',
        replace: false,
        transclude: false,
        restrict: 'E',
        scope: false,
        controller: function($scope, $element, $attrs, $transclude) {
            // No Op
            $scope.foo = 'bar';
        },
        compile: function compile(tElement, tAttrs, transclude) {
            return {
                pre: function preLink(scope, iElement, iAttrs, controller) {
                    // No Op
                },
                post: function postLink(scope, iElement, iAttrs, controller) {
                    // No OP
                }
            }
        },
        link: function postLink(scope, iElement, iAttrs) {
            // No Op
        }
    };
    return directiveDefinitionObject;
});

部分 HTML 模板只包含一个表格和一个标签上的 ng-repeat。模板呈现得很好,但我的 JavaScript 控制台包含:

Error: No controller: myItemList
    at Error (<anonymous>)
    at h (http://localhost:9000/assets/javascripts/angular.min.js:41:458)
    at i (http://localhost:9000/assets/javascripts/angular.min.js:43:415)
    at http://localhost:9000/assets/javascripts/angular.min.js:48:191
    at http://localhost:9000/assets/javascripts/angular.min.js:94:307
    at h (http://localhost:9000/assets/javascripts/angular.min.js:78:33)
    at http://localhost:9000/assets/javascripts/angular.min.js:78:266
    at Object.e.$eval (http://localhost:9000/assets/javascripts/angular.min.js:88:347)
    at Object.e.$digest (http://localhost:9000/assets/javascripts/angular.min.js:86:198)
    at Object.e.$apply (http://localhost:9000/assets/javascripts/angular.min.js:88:506) <my-item-list> 

我打算增加嵌套(例如,用另一个指令替换 HTML 部分模板中的我在我的指令定义中添加了一个“require”属性,我得到了相同的“无 Controller ”错误消息,但带有我需要的任何名称(即使我尝试要求 ngRepeat 或页面的主 Controller )。

最佳答案

它看起来像是 Angular 中的错误:http://github.com/angular/angular.js/issues/1903

你的指令真的需要一个 Controller 吗?我会说 10 个指令中有 9 个不需要它们自己的 Controller (大多数它们只需要 link)。

当您从指令中删除 controller 时,错误似乎消失了。

编辑:更具体地说,当您组合controllercompile 时,问题似乎出现了。任何其他组合( Controller +链接、编译+链接或任何组合)都可以正常工作。

关于angularjs - 错误 : No controller in directive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16902999/

相关文章:

javascript - $state.go() 不路由到其他状态,url 中的 #/null

javascript - 如何在 Angular 指令中替换已弃用的替换属性

javascript - Grid-A-Licious 网格中的 ng-repeat

javascript - Angular ng-repeat 和连续图像

javascript - Angular $q 然后 hell

javascript - 模块 subview 未在组件模板的 ui View 中呈现

javascript - Angular js - 具有简单条件的 ng-class =""将不起作用

javascript - 在 AngularJS 指令中实现继承

angularjs - 使用 ng-Style 更改背景颜色

javascript - AngularJS 和带有 ng-repeat 的 ng-style