0
각도가 너무 새롭고 각도 응용 프로그램에 로컬 저장소를 구현하려고합니다. 기본 CRUD 작업이 있습니다. 내 컨트롤러에서 insert()
함수를 호출 할 때 나는 'myStorage가 정의되어'AngularJs : 객체를 삽입 할 때 myStorage가 정의되지 않았습니다.
MyApp.js 제목에 오류가
var MyApp = angular.module('MyApp', ['ngMaterial', 'ngMessages', 'material.svgAssetsCache', 'ngRoute'])
.config(function ($routeProvider) {
'use strict';
var routeConfig = {
controller: 'ButtonCtrl',
templateUrl: 'index.html',
resolve: {
store: function (myStorage) {
// Get the correct module (API or localStorage).
return myStorage.then(function (module) {
module.get(); // Fetch the todo records in the background.
return module;
});
}
}
};
$routeProvider
.when('/', routeConfig)
.when('/:status', routeConfig)
.otherwise({
redirectTo: '/'
});
});
myStorage.js
var MyApp = angular.module('MyApp');
MyApp.factory('myStorage', ['$q', function($q) {
console.log('store init');
var STORAGE_ID = 'my_app';
var store = {
dataStore: [],
_getFromDataStore: function() {
return JSON.parse(myStorage.getItem(STORAGE_ID) || '[]');
},
_saveToDataStore: function() {
return myStorage.setItem(STORAGE_ID, JSON.stringify(dataStore));
},
delete: function(data) {
var deferred = $q.defer();
store.dataStore.splice(store.dataStore.indexOf(data), 1);
store._saveToDataStore(store.dataStore);
deferred.resolve(store.dataStore);
return deferred.promise;
},
get: function() {
var deferred = $q.defer();
angular.copy(store._getFromDataStore(), store.dataStore);
deferred.resolve(store.dataStore);
return deferred.promise;
},
insert: function(data) {
var deferred = $q.defer();
store.dataStore.push(data);
store._saveToDataStore(store.dataStore);
deferred.resolve(store.dataStore);
return deferred.promise;
},
put: function(data, index) {
var deferred = $q.defer();
store.dataStore[index] = data;
store._saveToDataStore(store.dataStore);
deferred.resolve(store.dataStore);
return deferred.promise;
}
};
return store;
}]);
ButtonCtrl.js
var MyApp = angular.module('MyApp');
MyApp.controller('ButtonCtrl', ['$scope', 'myStorage', function($scope, myStorage) {
$scope.store = myStorage;
$scope.addData = function() {
var o = new Object()
o.key = 'someKey';
o.value = 'Hello, world';
console.log($scope.store.dataStore);
$scope.store.insert(o); // Throws error myStorage is not defined.
console.log($scope.store.dataStore);
};
}]);
addData()
에는 console.log($scope.store.dataStore);
빈 배열을 콘솔에 인쇄합니다. 하지만 $scope.store.insert(o)
으로 전화를 걸면 콘솔에 오류가 표시됩니다.