AngularJs的新手,我正在尝试通过构建一个单页面的Todo Application进行培训。问题是,我无法加载要用于此的localStorage工厂。目前,我陷入了以下错误:
Undefined is not a function at routeconfig.resolve.store on app.js line 11.
这是代码:
app.js
angular.module('TodoAngular', ['ngRoute'])
.config(function($routeProvider) {
'use strict';
var routeConfig = {
controller: 'TodoController' ,
templareUrl: 'app/partials/TodoList.html',
resolve: {
store: function (todoAngularStorage) {
// Récupère le module qui gère le localStorage
return todoAngularStorage.then(function (module) {
module.get(); // Récupère les données
return module;
});
}
}
};
$routeProvider
.when('/todos', routeConfig)
.otherwise({
redirectTo: '/todos'
});
}
);
todoAngularStorage.js
angular.module('TodoAngular')
.factory('todoAngularStorage', function ($http,$injector) {
'use strict';
return $injector.get('localStorage');
})
.factory('localStorage', function($q) {
'use strict';
var STORAGE_ID = 'todoAngularLocalStorage';
var store = {
todos: [],
//récupérer depuis le local storage
_getFromLocalStorage: function(){
return JSON.parse(localStorage.getItem(STORAGE_ID) || '[]');
},
//enregistrer dans le local storage
_saveToLocalStorage: function (todos) {
localstorage.setItem(STORAGE_ID, JSON.stringify(todos));
},
//supprimer un Todo
delete: function (todo) {
//instanciation de l'API Deferred
var deferred = $q.defer();
store.todos.splice(store.todos.indexOf(todo), 1);
store._saveToLocalStorage(store.todos);
deferred.resolve(store.todos);
return deferred.promise;
},
//récupérer les todos
get: function () {
//instanciation de l'API Deferred
var deferred = $q.defer();
angular.copy(store._getFromLocalStorage(), store.todos);
deferred.resolve(store.todos);
return deferred.promise;
},
//ajouter un todo à la fin de la todo list
insert: function (todo) {
//instanciation de l'API Deferred
var deferred = $q.defer();
store.todos.push(todo);
store._saveToLocalStorage(store.todos);
deferred.resolve(store.todos);
return deferred.promise;
}
};
return store;
});
我一直在尝试调试它,看来问题出在我app.js
文件下面一行的函数中传递的“模块”
return todoAngularStorage.then(function (module) {
在构建我的应用程序时,我一直在关注这个示例(https://github.com/tastejs/todomvc/tree/master/examples/angularjs),但现在我真的看不出我的错误在哪里。
您的localStorage
服务工厂返回的对象没有称为的任何属性then
。然后,您要从todoAngularStorage
工厂返回相同的对象,并尝试then
将返回值的属性用作函数,因此会出现错误。看来您只是想这样做:
return todoAngularStorage.get().then(function () {
return todoAngularStorage;
});
附带说明,您应该能够通过调试(在问题所在的位置设置断点并查看变量值)并查看代码(该值来自何处)来找到答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句