使用来自DOM的信息创建控制器/服务以持久保存数据

时间:2015-03-05 20:59:23

标签: javascript angularjs node.js sails.js

在角度中我在视图中有一个项目列表,这些项目将在另一个视图中显示,具体取决于它们是否被选中。

这是您查看要在另一个视图中显示哪些运动的视图

<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部分有任何建议,那也很棒。

1 个答案:

答案 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}}

我不想写你的所有代码,但这可能让你深入了解你可以做什么