我的代码如下:
var module = ons.bootstrap('my-app', ['onsen','ngSanitize'],['infinite-scroll']);
module.controller('NewsController', ['$scope', '$http', '$q','$timeout', function($scope, $timeout, $http, Demo, $q) {
$scope.MyDelegate = {
configureItemScope: function(index, itemScope) {
if (!itemScope.item) {
itemScope.canceler = $q.defer();
itemScope.item = {
title: 'Item #' + (index + 1),
label: '',
desc: '',
rand: Math.random()
};
$http.get('https://baconipsum.com/api/?type=meat-and-filler&sentences=1', {
timeout: itemScope.canceler.promise
}).success(function(data) {
itemScope.item.desc = data[0];
itemScope.item.label = itemScope.item.desc.substr(0, itemScope.item.desc.indexOf(" ")) + 'bacon'
}).error(function() {
itemScope.item.desc = 'No bacon lorem ipsum';
itemScope.item.label = 'No bacon'
});
}
},
calculateItemHeight: function(index) {
return 91;
},
countItems: function() {
return 10000000;
},
destroyItemScope: function(index, itemScope) {
itemScope.canceler.resolve();
}
};
)]};
事实上,我刚从http://onsen.io/blog/onsenui-1-2-2-new-components-lazy-repeat/
复制了ons-lazy-repeat的文档错误是:错误:undefined不是对象(评估'$ q.defer')
有人知道这个问题的原因吗?
答案 0 :(得分:2)
您错误地将依赖项注入了控制器。依赖项的字符串名称的顺序必须与函数导入的顺序完全匹配。你有什么:
module.controller('NewsController', ['$scope', '$http', '$q', '$timeout',
function($scope, $timeout, $http, Demo, $q) {
应该拥有的内容:
module.controller('NewsController', ['$scope', '$http', '$q', '$timeout',
function($scope, $http, $q, $timeout) {
此外,您已将Demo
作为功能导入,但导入中未列出'Demo'
;你似乎没有使用它,但如果你正在使用它,你应该确保你在匹配的顺序中同时拥有它们。
另外,我不确定为什么要将多个数组注入您的应用模块:
var module = ons.bootstrap('my-app', ['onsen','ngSanitize'],['infinite-scroll']);
这可能会或可能不会正常工作,但它绝对不是标准语法。它应该是:
var module = ons.bootstrap('my-app', ['onsen','ngSanitize','infinite-scroll']);