首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >离子应用程序中的无限观测根图误差

离子应用程序中的无限观测根图误差
EN

Stack Overflow用户
提问于 2015-10-13 19:43:15
回答 1查看 50关注 0票数 0

我有个守望者:

代码语言:javascript
复制
  $scope.bool = false;
  $scope.$watch(function(){
    return sessionService.get('computed');
    }, function(){
      if (sessionService.get('computed')) {
        $scope.bool = true;
      } else {
        $scope.bool = false;
      }
  });

这个离子应用程序的menu.html中的这个按钮:

代码语言:javascript
复制
<button nav-direction="back" class="button yy" ui-sref="app.result" ui-sref-active="currentNav" ng-show="bool" ng-click="navResult()">
      Board
    </button>

下面是sessionService:

代码语言:javascript
复制
.service('sessionService', ['$cookieStore', function ($cookieStore) {
    var localStoreAvailable = typeof (Storage) !== "undefined";
    this.store = function (name, details) {
        if (localStoreAvailable) {
            if (angular.isUndefined(details)) {
                details = null;
            } else if (angular.isObject(details) || angular.isArray(details) || angular.isNumber(+details || details)) {
                details = angular.toJson(details);
            };
            sessionStorage.setItem(name, details);
        } else {
            $cookieStore.put(name, details);
        };
    };

    this.persist = function(name, details) {
        if (localStoreAvailable) {
            if (angular.isUndefined(details)) {
                details = null;
            } else if (angular.isObject(details) || angular.isArray(details) || angular.isNumber(+details || details)) {
                details = angular.toJson(details);
            };
            localStorage.setItem(name, details);
        } else {
            $cookieStore.put(name, details);
        }
    };

    this.get = function (name) {
        if (localStoreAvailable) {
                return getItem(name);
        } else {
                return $cookieStore.get(name);
        }
    };

    this.destroy = function (name) {
        if (localStoreAvailable) {
            localStorage.removeItem(name);
            sessionStorage.removeItem(name);
        } else {
            $cookieStore.remove(name);
        };
    };

    var getItem = function (name) {
        var data;
        var localData = localStorage.getItem(name);
        var sessionData = sessionStorage.getItem(name);

        if (sessionData) {
            data = sessionData;
        } else if (localData) {
            data = localData;
        } else {
            return null;
        }

        if (data === '[object Object]') { return null; };
        if (!data.length || data === 'null') { return null; };

        if (data.charAt(0) === "{" || data.charAt(0) === "[" || angular.isNumber(data)) {
            return angular.fromJson(data);
        };

        return data;
    };

    return this;
}])

在某种程度上,应用程序创建变量computed并将其存储到sessionStorage中。

由于观察者的原因,我得到了一个周期误差。你能帮忙吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-14 01:18:07

在某一时刻,应用程序创建计算出来的变量并将其存储到sessionStorage.

如果是这样的话,在$rootScope上触发一个事件

代码语言:javascript
复制
$rootScope.$broadcast('computedChanged');

然后在你的控制器中你有了$watch

代码语言:javascript
复制
$scope.$on('computedChanged', function(){
    ...
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33111279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档