2015-09-30 53 views
0

我有幾個<selects>每次模塊上的對象屬性更改值時都會更新。當我嘗試記住狀態時,問題就來了。我將所有更改保存到localStorage,但是當我在窗口重新加載時重新分配保存的對象時,模型會正確更改,但視圖不會顯示更改,除非我單擊<select>,然後是所有其他應該是選擇從模型中獲得它們的真實值。如何在將數據加載到角度模型時更新視圖?

我可以看到,當負載延遲超時或事件監聽器時會發生這種情況。

我該如何解決這個問題?

var my_app = angular.module('campaign_listing', []) 
 
    .controller('campaign_list_controller', campaign_list_controller); 
 

 
function campaign_list_controller($http) { 
 
    var este = this; 
 
    this.filters = { 
 
    categories: ["a"], 
 
    }; 
 

 
    function get_save_state() { 
 
    var items = JSON.parse(localStorage.getItem("filters")); 
 
    return items; 
 
    } 
 
    this.recover_state = function() { 
 

 
    var save = get_save_state(); 
 
    console.log("recovering state:") 
 
    if (save) this.filters = save; 
 

 
    } 
 
    setTimeout(function() { 
 
    este.recover_state(); 
 
    }, 300); 
 
}
<select 
 
     id="multiselect_categories" 
 
     name="categories" 
 
     ng-model="ctrl.filters.categories" 
 
     ng-change="ctrl.update_fields()" 
 
     multiple="multiple"> 
 
    <option value="a">A</option> 
 
    <option value="b">B</option> 
 
    <option value="c">C</option> 
 
</select>

+1

你是如何結合的模式有何看法?向我們展示一些代碼,因爲它應該自動刷新 – sailens

回答

0

使用角度的$超時而不是setTimeout的,這將迫使新的消化週期將更新UI

$timeout(function() { 
    este.recover_state(); 
    }, 300); 
相關問題