$ q.when不是功能?

时间:2016-06-28 13:36:16

标签: javascript html angularjs ionic-framework

我正在尝试创建一个包含详细视图的主列表的简单应用程序,但我无法通过此错误:

ionic.bundle.js:26794       TypeError: $q.when is not a function
at Object.getAllObjects (app.services.js:13)
at app.controller.js:11
at ionic.bundle.js:56230
at Object.ready (ionic.bundle.js:2140)
at Object.ready (ionic.bundle.js:56223)
at new MainController (app.controller.js:7)
at Object.instantiate (ionic.bundle.js:18010)
at $controller (ionic.bundle.js:23412)
at self.appendViewElement (ionic.bundle.js:59900)
at Object.render (ionic.bundle.js:57893)

它所指的代码是:

app.factory('DatabaseService', ['$q', '$http','$rootScope',

function DatabaseService( $rootScope, $q, $http) {  
var _db;    


var _content;

return {
    initDB: initDB,
    getAllObjects: function getAllObjects() {  
if (!_content) {
   return $q.when(_db.allDocs({ include_docs: true}))
        .then(function(docs) {


            _content= docs.rows.map(function(row) {

                return row.doc;
            });


            _db.changes({ live: true, since: 'now', include_docs: true})
               .on('change', onDatabaseChange);

            return _content;
        });
} else {

    return $q.when(_content);
}
},
getObject: function getObject(id){
  var index = findIndex(($rootScope._content),id);
  return $rootScope._content[index];
}

};

似乎所有依赖项都是正确的,为什么我会收到这个奇怪的错误?似乎我最近的大多数错误都是“非功能”错误,但我无法弄清楚原因。

1 个答案:

答案 0 :(得分:1)

你混合了注射剂:

['$q', '$http','$rootScope',function DatabaseService( 
  $rootScope, $q, $http) {  ...}

所以实际上你的$ q包含$ http,重新排序,它会起作用。