Javascript 使用离子交换的本地存储
我正在尝试将我的应用程序连接到本地存储,这样我就可以将数据保存在用户设备上,而不会在每次关闭应用程序时重置。我唯一的问题是我不知道如何将本地存储链接到我的对象数组。非常感谢您的帮助。我已经添加了我认为相关的任何代码 app.jsJavascript 使用离子交换的本地存储,javascript,angularjs,ionic-framework,local-storage,ionic,Javascript,Angularjs,Ionic Framework,Local Storage,Ionic,我正在尝试将我的应用程序连接到本地存储,这样我就可以将数据保存在用户设备上,而不会在每次关闭应用程序时重置。我唯一的问题是我不知道如何将本地存储链接到我的对象数组。非常感谢您的帮助。我已经添加了我认为相关的任何代码 app.js // Ionic Starter App // angular.module is a global place for creating, registering and retrieving Angular modules // 'starter' is the
// Ionic Starter App
// angular.module is a global place for creating, registering and retrieving Angular modules
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html)
// the 2nd parameter is an array of 'requires'
// 'starter.services' is found in services.js
// 'starter.controllers' is found in controllers.js
angular.module('gas-mileage-tracker', ['ionic', 'ionic.utils', 'gas-mileage-tracker.controllers', 'gas-mileage-tracker.services'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleLightContent();
}
});
})
.run(function($localstorage) {
var mileages = [];
$localstorage["mileages"] = JSON.stringify(mileages);
$localstorage.set('name', 'mileages');
console.log($localstorage.get('name'));
$localstorage.setObject('post', mileages=[{
id: 0,
mpg: 20,
car: "1998 Toyota 4runner",
miles_driven: "",
gallons_added: "",
gas_station: "Shell"
}]);
var post = $localstorage.getObject('post');
console.log(post);
})
.config(function($stateProvider, $urlRouterProvider) {
// Ionic uses AngularUI Router which uses the concept of states
// Learn more here: https://github.com/angular-ui/ui-router
// Set up the various states which the app can be in.
// Each state's controller can be found in controllers.js
$stateProvider
// setup an abstract state for the tabs directive
.state('tab', {
url: '/tab',
abstract: true,
templateUrl: 'templates/tabs.html'
})
.state('tab.calculations', {
url: '/calculations',
views: {
'tab-calculations': {
templateUrl: 'templates/tab-calculations.html',
controller: 'CalculationsCtrl'
}
}
})
.state('tab.mileages', {
url: '/mileages',
views: {
'tab-mileages': {
templateUrl: 'templates/tab-mileages.html',
controller: 'MileagesCtrl'
}
}
})
.state('tab.mileage-details', {
url: '/mileages/:mileageId',
views: {
'tab-mileages': {
templateUrl: 'templates/mileage-details.html',
controller: 'MileageDetailsCtrl'
}
}
})
.state('tab.gas_stations', {
url: '/gas_stations',
views: {
'tab-gas_stations': {
templateUrl: 'templates/tab-gas_stations.html',
controller: 'GasStationsCtrl'
}
}
})
.state('tab.cars', {
url: '/cars',
views: {
'tab-cars': {
templateUrl: 'templates/tab-cars.html',
controller: 'CarsCtrl'
}
}
})
$urlRouterProvider.otherwise('/tab/mileages');
});
services.js
angular.module('gas-mileage-tracker.services', [])
.factory('Mileages', function() {
var mileages = [{
id: 0,
mpg: 20,
car: "1998 Toyota 4runner",
miles_driven: "",
gallons_added: "",
gas_station: "Shell"
}, {
id: 1,
mpg: 16,
car: "2002 Toyota 4runner",
miles_driven: "",
gallons_added: "",
gas_station: "Loaf N' Jug"
}, {
id: 2,
mpg: 18,
car: "2002 Toyota 4runner",
miles_driven: "",
gallons_added: "",
gas_station: "Conoco"
}, {
id: 3,
mpg: 17,
car: "1998 Toyota 4runner",
miles_driven: "",
gallons_added: "",
gas_station: "Bradley"
}, {
id: 4,
mpg: 18,
car: "2002 Toyota 4runner",
miles_driven: "",
gallons_added: "",
gas_station: "Texaco"
}];
return {
all: function() {
return mileages;
},
remove: function(mileage) {
mileages.splice(mileages.indexOf(mileage), 1);
},
add: function(mileage) {
mileage.id = mileages.length;
mileage.mpg = mileage.miles_driven/mileage.gallons_added
mileages.push({
editMode: false,
id: mileage.id,
mpg: mileage.mpg,
car: mileage.car,
gas_station: mileage.gas_station
});
console.log(mileage); // Log the original mileage
console.log(mileages[mileage.id]); // Log the added mileage
mileage.mpg= '';
mileage.miles_driven= '';
mileage.gallons_added= '';
mileage.car= '';
mileage.gas_station= '';
},
edit: function(mpg) {
mileage.editMode = true;
mileages.mpg = mileage.mpg
console.log(mileage);
},
save: function(mpg) {
mileage.editMode = false;
},
get: function(mileageId) {
for (var i = 0; i < mileages.length; i++) {
if (mileages[i].id === parseInt(mileageId)) {
return mileages[i];
}
}
return null;
}
};
});
使用此服务管理、创建、检索或删除其每个控制器中的LocalStorage变量。我希望这会有帮助
.factory('sessionService',['$http',function($http){
return {
set:function(key,value){
return localStorage.setItem(key,JSON.stringify(value));
},
get:function(key){
return JSON.parse(localStorage.getItem(key));
},
destroy:function(key){
return localStorage.removeItem(key);
},
};
}])
为了确保更多用户了解本地存储不一定必须是持久的(在iOS上),请查看: 因此,我建议在包装中使用nativestorage:
问题是如何扩展,请指定您想要完成什么?我希望能够使用我当前拥有的函数向数据库添加删除和不添加什么。好的,既然如此,我如何使用我当前拥有的添加和删除函数实现这一点?@JacobBrauchler Hey,我不太明白你的意思,我似乎无法使用这些方法使其工作,我需要保存某些数据,但我无法使用这些函数使其工作。某些数据?什么意思?这种格式有数据吗?基于我提供的服务,我尝试在您提供的功能中实现它们,但数据没有被存储。这将是您在my services.js中看到的里程格式
angular.module('ionic.utils', [])
.factory('$localstorage', ['$window', function($window) {
return {
set: function(key, value) {
$window.localStorage[key] = value;
},
get: function(key, defaultValue) {
return $window.localStorage[key] || defaultValue;
},
setObject: function(key, value) {
$window.localStorage[key] = JSON.stringify(value);
},
getObject: function(key) {
return JSON.parse($window.localStorage[key] || '{}');
}
}
}]);
.factory('sessionService',['$http',function($http){
return {
set:function(key,value){
return localStorage.setItem(key,JSON.stringify(value));
},
get:function(key){
return JSON.parse(localStorage.getItem(key));
},
destroy:function(key){
return localStorage.removeItem(key);
},
};
}])