在角度中我在视图中有一个项目列表,这些项目将在另一个视图中显示,具体取决于它们是否被选中。
这是您查看要在另一个视图中显示哪些运动的视图
<ion-item ng-repeat="sport in sports"
ng-init="sport.checked = true"
ng-click="sport.checked = !sport.checked">
{{:: sport.name}}
</ion-item>
这是另一种观点
<div ng-show="sport.checked"
ng-repeat="sport in sports">
{{sport.name}}
</div>
因为你看到所有这些运动都有ng-init = sport.checked = true
,所以所有的运动都会在开头显示,但你可以取消选中这些运动,直到你再次检查它们为止看不到它们。
这就是我迄今为止所做的全部工作,但是一旦刷新页面,所有检查和取消检查都会消失,刷新后所有内容都会重新启动,因此您知道我需要将数据保存在数据库或其他内容中,我正在使用node.js / sails.js以及Redis。我知道如何在node.js部分中创建几乎所有内容,但是我需要在Angular部分中使用控制器和服务提供一些帮助,所以我需要你的帮助。
我希望用户只能检查一次他们的运动,而不是每次他们都登录应用程序。
那么我可以添加哪些功能给控制器,以便在取消选中运动时向服务提供建议,以及服务将如何接收该数据?
另外,如果您对NodeJS部分有任何建议,那也很棒。
答案 0 :(得分:2)
以下是您可以使用的示例。这非常简单。所有$http
函数都与promises一起使用。控制器将从服务获取设置,如果为空,则从服务
angular.module('app').controller('appctrl',['appsrv','$scope',function(appsrv, $scope){
$scope.settings = service.settings;
if(!$scop.settings){
//retrieve data from server when it's not in the service
appsrv.getSettingsRemote().then($scope.settings = service.settings);
}
}]).service('appsrv',[$http, function($http){
return {
getSettings : function (){
// get settings from localstorage
},
setSettings : function (){
// store settings to localstorage
},
getSettingsRemote : function () {
$http.get('url').then(//set things locally);
}
}
}]);
然后,从您的视图中,您可以将控制器分配给视图,然后引用您的设置,例如{{settings.propname}}
我不想写你的所有代码,但这可能让你深入了解你可以做什么