Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我重新加载禁用未工作时,使用angularjs使用按钮禁用ng重复?_Javascript_Jquery_Angularjs - Fatal编程技术网

Javascript 当我重新加载禁用未工作时,使用angularjs使用按钮禁用ng重复?

Javascript 当我重新加载禁用未工作时,使用angularjs使用按钮禁用ng重复?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我有一个商店列表,当用户单击“应用”按钮被禁用但我正在重新加载该页面时,它会显示基于服务的一个“接受”按钮的商店列表 残疾人不能工作。 期望值:一旦用户单击应用按钮,当用户转到该页面时,按钮应被禁用 var-app=angular.module('plunker',[]); 应用程序控制器('MainCtrl',函数($scope){ $scope.name='World'; $scope.services=[ {{u id:1,标题:“服务1”}, {{u id:2,标题:“服务2”}, {

我有一个商店列表,当用户单击“应用”按钮被禁用但我正在重新加载该页面时,它会显示基于服务的一个“接受”按钮的商店列表 残疾人不能工作。 期望值:一旦用户单击应用按钮,当用户转到该页面时,按钮应被禁用

var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.name='World';
$scope.services=[
{{u id:1,标题:“服务1”},
{{u id:2,标题:“服务2”},
{u id:3,标题:“服务3”}
];
$scope.apply=功能(服务){
控制台日志(服务id+“单击”);
service.clicked=true;
}
});

安古拉斯普朗克
文件。写(“”);
你好{{name}}

{{service.title}} 应用
我认为你应该使用SPA之类的东西&根据他们的url会有不同的看法

您应该创建一个具有可共享变量的服务,而不是将变量存储在控制器中。当您转到应用程序中的其他页面时,一旦其他带有控制器的模板加载到该页面,依赖控制器将销毁其作用域

服务

app.service('dataService', function(){
   this.services  = [
    {_id: 1, title: "Service 1"},
    {_id: 2, title: "Service 2"},
    {_id: 3, title: "Service 3"}
  ];

})
控制器

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope, dataService) {
  $scope.name = 'World';

  $scope.services = dataService.services;

  $scope.apply = function(service){
    console.log(service._id + " clicked");
    service.clicked = true;
  }

});

一个选项是保存到本地存储。当选项卡/窗口关闭时,这种情况将持续存在。然而,它是客户端存储。如果用户在新浏览器中打开它,它将不包含该数据。如果数据需要跨机器持久化,那么后端数据库可能是更好的选择

localStorage和sessionStorage将对象存储为键值对。其中,值转换为字符串。你必须根据自己的需要决定最佳结构

我决定使用一个键将所有内容存储为JSON。这意味着每次读取时,我都必须解析它。保存意味着我必须阅读所有内容,修改我需要的项目,然后将其全部保存回去

另一种选择是indexedDB,它是一个客户端数据库。允许复杂的数据结构,并且不需要您首先对对象进行字符串化,但是它的实现更加复杂,并且不如localStorage那么受支持

下面是本地存储的一个非常粗略的快速概念:

以下是服务的螺母和螺栓:

app.service('ServiceHelper', function(){    
    //Our service helper service

    this.get = function(){
        //Read service from local storage, remember its saved as a string so parse
        return JSON.parse(localStorage.getItem('services'));
    }

    this.save = function (title) {
        //Save a new service. First have to read all, append new service then save all
        var services = this.get('services') || [];

        services.push({title: title, accepted: false});

        localStorage.setItem('services', JSON.stringify(services));
    }

    this.markedAsAccepted = function (i){
        //Mark service as accepted at a certain index
        var services = this.get();

        services[i].accepted = true;

        localStorage.setItem('services', JSON.stringify(services));
    }
});
一些文档:

您在当前会话中仅设置了已单击的变量。重新加载页面时,页面将丢失并返回默认值。您需要为列表中的每个服务保留这些数据,以便在用户重新加载页面时记住这些数据。您可以使用API来请求服务。然后,当您单击accept时,发出另一个AJAX请求,将该服务标记为accepted等。因此,当用户重新加载页面时,他们将获得更新的信息。还有其他选项,比如本地/会话存储来持久化数据,或者indexedDB。但是那是客户端存储。我如何使用本地存储呢?请你解释一下,我会整理一下……你能分享我的答案吗?看我的答案,我能解释得更好