我想使用ons-lazy-repeat但是有一个错误

时间:2015-09-16 14:59:37

标签: angularjs onsen-ui

我的代码如下:

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')

有人知道这个问题的原因吗?

1 个答案:

答案 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']);