2015-10-23 2 views
1

я хранить данные на заводе, как это:Данные не могут быть синхронизированы с помощью angularjs

module.factory('AddedStockListData', function(){ 
var list= []; 
var size = 0; 
return{ 
    getList: function(){ 
     return list; 
    }, 
    setList: function(data){ 
     list = data; 
    }, 
    getSize:function(){ 
     return size; 
    }, 
    setSize:function(){ 
     size++; 
    }, 
    setDelSize:function(){ 
     size--; 
    } 
} 
}); 

И в мой контроллер код следующим образом:

$scope.stocksSearchList = AddedStockListData.getList(); 

    $scope.load = function($done){   
    $timeout(function() { 
     document.getElementById("showTipsToDropDown").style.display = "none"; 
     $scope.stocksSearchList = AddedStockListData.getList(); 
     $done(); 
    }, 500); 

} 

Мой HTML как это:

<ons-page ng-controller="createPortStockController"> 
    <ons-pull-hook ng-action="load($done)" var="loader" id="pullDown"> 
     <span ng-switch="loader.getCurrentState()"> 
      <span ng-switch-when="initial"><ons-icon size="35px" icon="ion-arrow-down-a"></ons-icon> Pull down to refresh</span> 
      <span ng-switch-when="preaction"><ons-icon size="35px" icon="ion-arrow-up-a"></ons-icon> Release to refresh</span> 
      <span ng-switch-when="action"><ons-icon size="35px" spin="true" icon="ion-load-d"></ons-icon> Loading data...</span> 
     </span> 
    </ons-pull-hook> 
    <div> 
     <ons-toolbar class="DCF" fixed-style> 
      <div class="left"> 
       <ons-back-button style="color:white;"></ons-back-button> 
      </div> 
      <div class="center" style="font-size:22px;" >Create Portfolio</div> 
      <div ng-click="create()"class="right" style="font-size:18px;color:white;margin-top:10px;padding-right:10px;" >Create</div> 
     </ons-toolbar> 
     <div class="addStockButton" ng-click = "myNavigator.pushPage('portStockSearchList.html', { animation : 'slide'})"> 
      <i class="fa fa-plus" ></i>Add Stock 
      <p id="showTipsToDropDown"style="margin:0px;font-size:12px;text-align:center;color:#adadad;">After your first time add stocks, please drop down to refresh</p> 
     </div> 

     <div class="stockSearchList"> 
      <div ng-repeat="stockSearch in stocksSearchList"> 
       <div class="stockSearchOne"> 
        <div class="stockSearchOneComp">{{stockSearch.company}}</div> 
        <div class="stockSearchOneInfo">Symbol: {{stockSearch.symbol}} | Exchange:{{stockSearch.exchange}} </div>       
       </div> 
      </div> 
     </div> 
    </div> 

Фактически, я меняю заводские данные на следующей странице, я хочу, чтобы эта страница меняла дисплей, когда заводские данные были изменены. Но в результате я в первый раз меняю данные на следующей странице и обратно на эту страницу, данные не будут отображаться, и я обновлю эту страницу с помощью ons-pull-hook>, а затем, если я пойду на следующую страницу, чтобы изменить данные, когда я вернусь сюда, данные будут синхронизированы. Итак, результат в первый раз, я должен обновить страницу, чтобы получить данные, но после первого раза мне не нужно это делать

Кто-нибудь может помочь мне решить эту проблему?

ответ

0

Попробуйте использовать $scope.$apply() после получения данных, он должен обновить содержимое без необходимости обновления страницы. Вы можете узнать больше о $scope.$apply()here.

+0

Я не знаю, как это сделать. Потому что данные были получены на следующей странице, фактически в другом контроллере. – Miao

Смежные вопросы