1

我有一个使用 LocalStorage 对象变量(称为实体)的视图。

/* Entity Service */ 
.factory('EntityService', function (){  
  return {
    getEntity : function(){
      return JSON.parse(window.localStorage['entity'] || false);
    }
  };
})

/* Route definition */
.state('app', {
  url: "/app",
  abstract: true,
  templateUrl: "templates/menu.html",
  controller: 'AppCtrl',
  resolve : {
    Entity : function(EntityService){
      return EntityService.getEntity();
    }
  }
})

/* AppCtrl*/
.controller('AppCtrl', function($scope,Entity) {
  $scope.model = {
   entity : Entity
  };
})

/* AppCtrl (view) */    
<ion-view view-title="{{ model.entity.name }}">
    <ion-content>
        <div class="padding">Home</div>
    </ion-content>
</ion-view>

/* EntitiesCtrl */
$scope.setEntity = function(entity){
  window.localStorage['entity'] = JSON.stringify(entity);
  $state.go('app.home');
}

/* EntitiesCtrl (view)*/
<div class="list">      
  <a class="item item-thumbnail-left" ng-click="setEntity(entity)" ng-repeat="entity in model.entities">
    <img src="img/entities/{{ entity.logo }}">
    <h2>{{ entity.name }} - {{ entity.acronym }}</h2>
    <p>{{ entity.city.name }} - {{ entity.city.state.acronym }}</p>
  </a>
</div>

LocalStorage 变量entity的值在 EntitiesCtrl 中改变了,但是当 $state.go('app.home') 显示 Home 视图时,值在 EntitiesCtrl 中没有改变

{{ model.entity.name }}

每次$state.go('app.home');时,我能做些什么来获取window.localStorage['entity'] 的新值;叫做?

谢谢!

4

2 回答 2

1

我会更改服务,使其返回对对象的引用。然后在任何控制器中所做的任何更改都应该在存储回 localStorage 之前更新相同的对象。然后,您将在整个应用程序中拥有原型继承绑定

.factory('EntityService', function (){
  var entity;  
  return {
    getEntity : function(){
      if(!entity){
          entity = JSON.parse(window.localStorage['entity'] || false);
       }
      return entity;// object stored in service now
    },
     saveEntity:function(){
         if(entity){
           window.localStorage['entity'] = JSON.stringify(entity);
        }                   
     }
  };
});

然后不是直接更新localStorage,而是更新对象并在服务中使用save方法

于 2015-04-29T21:30:23.930 回答
0

而不是view-title="{{ model.entity.name }}">,尝试:

<ion-nav-title>{{model.entity.name}}</ion-nav-title>

我不确定是否viewTitle支持角度插值。

于 2015-04-29T21:21:53.780 回答