我怎么能把一个项目与checked = true取决于数据库中的信息?

我有一个项目列表,选项选中或取消选中它们。 我正在做一个post请求,以保存未经检查的项目,该post请求工程很好,但我有一个问题与获取请求,前端从后端检索罚款信息,但我有这个function正在进行checked = true的项目,而不是照顾未经检查的项目已保存

  if (sports.length) { $scope.sports = _.map(sports, function(sport) { sport.checked = true; return sport; }); }; 

所以,如果用户刷新页面,由于上面的function,所有的项目回到checked = true 。 那么我该怎么做才能坚持与选中或未选中的项目? 为了坚持这个数据,我必须改变那个函数呢?

这是我关于数据获取请求的代码

我正在使用lodash ,以防万一…

前端

controller.js

请阅读本代码中的注释

 .controller('SportsController', function($scope, SportsFactory, AuthFactory) { $scope.sports = []; SportsFactory.getSportChecked(customer).then(function(sportChecked) { _.each(sports, function(sport) { var sportIds = _.pluck(sports, 'id'), intersectedSports = _.intersection(sportIds, sportChecked), checkedSportObjects = _.filter(sport, function(sportObj) { return _.includes(intersectedSports, sportObj); }); _.each(checkedSportObjects, function(sport) { $scope.sports.push(sport); }); }); } //this is the function putting checked = true with out taking care //of what the back-end returns if (sports.length) { $scope.sports = _.map(sports, function(sport) { sport.checked = true; return sport; }); } $scope.toggleSportSelection = function(sport) { var params = {}; params.user = $scope.customer.customer; params.sport = sport.id; sport.checked = !sport.checked; SportsFactory.setSportChecked(params); }; }); 

service.js

 .factory('SportsFactory', function($http, $q, AuthFactory, LocalForageFactory, CONSTANT_VARS) { return { getSportChecked: function(customer) { var defer = $q.defer(), user, rejection = function(err) { console.log(err); defer.reject(err); }; LocalForageFactory.retrieve(CONSTANT_VARS.LOCALFORAGE_SPORTS_CHECKED) .then(function(sportChecked) { user = customer.customer; if (!_.isNull(sportChecked)) { defer.resolve(sportChecked); }else { $http.get(CONSTANT_VARS.BACKEND_URL + '/sports/getChecked/' + user) .success(function(sportChecked) { LocalForageFactory.set(CONSTANT_VARS.LOCALFORAGE_SPORTS_CHECKED, sportChecked); defer.resolve(sportChecked); }) .error(rejection); } }, rejection); return defer.promise; } } }); 

BACK-END – node.js / sails.js

SetSportsController

 module.exports = { retrieveSetCheck: function(req, res) { if (req.params) { SportSelectionService.getSportChecked(req.params).then(function(sportChecked) { res.json(200, sportChecked); }, function(err) { res.json(400, err); }); }else { res.json(400, {error: 'Error retrieving Sports'}); } } } 

SportSelectionService

 module.exports = { getSportChecked: function(params) { var Promise = require('bluebird'); return new Promise(function(fullfill, reject) { console.time('sportChecked_findOne'); SportSelection.find({ user: params.user }).exec(function(err, sportChecked) { console.timeEnd('sportChecked_findOne'); if (err) { reject(new Error('Error finding sportChecked')); console.error(err); }else { if (sportChecked) { fullfill(sportChecked); }else { console.time('sportChecked_create'); SportSelection.create({ sport: [], user: params.user }).exec(function(err, created) { console.timeEnd('sportChecked_create'); console.log(err); console.log(created); if (err) { reject(new Error('Error on sportChecked')); }else { fullfill(created); } }); } } }); }); } }