Kev*_*man 2 angularjs angularjs-directive angularjs-ng-repeat
伙计们,我是一个AngularJS新手,我正在尝试使用Angular创建绑定到模型层次结构的基本HTML层次结构.我的顶级模块如下所示:
angular.module('fooApp',['ngResource','myList'])在我的页面的根div处声明为ng-app ="fooApp".
然后我在页面中看到这样的HTML:
<my-item-list/>
Run Code Online (Sandbox Code Playgroud)
我有第二个模块,如下所示:
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;
});
Run Code Online (Sandbox Code Playgroud)
部分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>
Run Code Online (Sandbox Code Playgroud)
我打算增加嵌套(例如用另一个指令替换HTML部分模板,我真的需要弄清楚我做错了什么.感觉我正在做一些新手的错误.每当我添加一个'require'属性到我的指令定义,我得到相同的"无控制器"错误消息,但是我需要的名称(即使我尝试并要求ngRepeat或页面的主控制器).
它看起来像Angular中的一个错误:http://github.com/angular/angular.js/issues/1903
你的指令真的需要一个控制器吗?我会说10个指令中有9个不需要自己的控制器(大多数只需要它们link).
controller从指令中删除时,错误似乎消失了.
编辑:更具体地说,看来,当你把问题出现controller和compile.任何其他组合(控制器+链接,编译+链接,或任何他们自己)工作正常.
| 归档时间: |
|
| 查看次数: |
3608 次 |
| 最近记录: |