使用DOM中的信息创建一个控制器/服务来持久化数据

Creating a controller/service to persist data, with information from the DOM

本文关键字:控制器 一个 服务 数据 持久化 DOM 信息 创建 使用      更新时间:2023-09-26

在angular中,我在一个视图中有一个项目列表,这些项目将根据是否选中而显示在另一个视图。

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

<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,所以所有的运动都显示在开头,但你可以取消选中这些运动,以便在再次选中之前看不到它们。

到目前为止,这就是我所拥有的,并且可以工作,但一旦刷新页面,所有的检查和取消检查都会消失,刷新后一切都会重新启动,所以正如你所知,我需要将这些数据保存在DB或其他文件中,我将使用node.js/sails.js和Redis来实现这一点。我知道如何在node.js部分创建几乎所有的东西,但在控制器和服务的Angular部分我需要一些帮助,所以我需要你的帮助。

我希望用户只能查看一次他们的运动,而不是每次登录应用程序。

那么,当一项运动被取消检查时,我可以向控制器添加哪些功能来向服务提供建议,以及服务将如何接收这些数据?

此外,如果你对NodeJS部分有任何建议,那也太棒了。

下面是一个可以使用的示例。这是赤裸裸的。$http的所有功能都与承诺配合使用。当控制器从服务请求新的设置时,如果该设置为空,则控制器将从服务获取设置

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

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