【问题标题】:How to 2-way bind localStorageService in AngularJs?如何在 AngularJs 中双向绑定 localStorageService?
【发布时间】:2016-01-29 22:51:33
【问题描述】:

我现在正在使用浏览器的本地存储构建一个客户收银类型的应用程序。我想出了如何使用本地存储,但如果我从客户方下一个新订单,它不会更新收银员方。

app.controller('posController', function($scope,localStorageService,Data,$rootScope,$window){
  console.log(localStorageService.get("placedOrder"));
  $scope.orders = localStorageService.get("placedOrder");
});

app.controller("orderController",function($scope,Data,localStorageService){
  var arr = localStorageService.get("placedOrder") || [];
  arr.push({"name":$scope.name,
                        "order": $scope.order,
                         "time": Data.time,
                         "email": Data.email
                       });
  localStorageService.get("placedOrder",arr)
  console.log(Data.placedOrder);
});

所以 posController 应该在 ordercontroller 更新 localStorage 后立即更新。

【问题讨论】:

    标签: angularjs local-storage angular-local-storage


    【解决方案1】:

    假设您的意思是收银员和客户使用不同的系统,这是行不通的。本地存储适用于浏览器,不适用于这些类型的交易。对于此类应用程序,您需要使用托管在网络上的数据库。

    【讨论】:

    • 我想我理解你,但我从采访中得到了这个问题,它说使用浏览器的本地存储或使用 firebase .. 我不熟悉 firebase .. 所以我想用这个 ..此外,当我刷新时,我可以获取更新的本地存储 ..
    • 所以假设收银员和客户使用相同的浏览器...您首先需要在存储中初始化您的订单。因此,通过执行类似 localStorageService.set('placedOrder', []); 的操作来创建一个空数组;现在你从来没有真正写入存储,因为你只是创建了一个空数组而不是使用 localStorageService。
    【解决方案2】:

    您需要与其他控制器沟通,有些东西发生了变化,请更新您的数据。

    这可以通过使用 事件通信,它可以让你解耦你的逻辑。

    你必须像这样调用/触发事件

    $rootScope.$brodcast("myevent");

    你必须像下面这样使用另一端来监听触发的事件。

    $rootScope.$on("myevent",function(){ ....Update your other controller data... });

    【讨论】:

    • 嘿,你能扩展你的答案吗,我看到了类似的东西但无法产生结果,仍然想看看你的答案(:,谢谢!
    • 我试图回答,但移动端的 stackoverflow 网站不允许我将非格式化代码和移动端网站无法格式化。明天我只会从机器上回答你的问题。我希望同时你能找到方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多