設置

2013-02-20 36 views
21

我有多個選擇自定義查詢國家的選擇2指令角UI選擇二多個指令的初始值來獲取數據:設置

// Directive 
<input ng-model="filters.countries" ui-select2="filters.countryOptions" 
    data-placeholder="Choose a country..."> 

// filters.countryOptions 
{ 
    multiple: true, 
    query: function() { 
     get_list_of_countries(); 
    } 
} 

// Formatted data from remote source 
[ 
    {id: 'US', text: 'United States'}, 
    {id: 'CA', text: 'Canada'} ... 
] 

我正在嘗試設置最初選擇的值在使用我的控制器:

$scope.filters.countries = [{id: 'US', text: 'United States'}]; 

這並正確設置模式,但這種情況正在發生已經發生了選擇2初始化之前。當我逐步完成剩餘的初始化代碼時,輸​​入會臨時顯示[Object],然後最終消隱$scope.filters.countries和輸入,但不會在輸入中顯示佔位符文本。

爲了解決這個問題,我使用下面的重置模型的初始值:

$scope.$on('$viewContentLoaded', function() { 
    setTimeout(function() { 
     $scope.filters.countries = [{id: 'US', text: 'United States'}]; 
    }, 100); 
}); 

看來還真的hackish使用setTimeout是。有沒有更好的方法,我錯過了?

更新1

按照要求通過ProLoser這裏是一個演示和github上票。

演示:http://plnkr.co/edit/DgpGyegQxVm7zH1dZIJZ?p=preview

GitHub的問題:https://github.com/angular-ui/angular-ui/issues/455

繼ProLoser的建議下,我開始使用選擇2的initSelection功能:

initSelection : function (element, callback) { 
    callback($(element).data('$ngModelController').$modelValue); 
}, 

它的伎倆,但仍然感覺就像一個解決方法。

+1

您可以創建一個演示這個,也許開罰單? 如果你在select2中使用'initSelection'(這是特別爲此設計的),你可以只執行'$ scope.filters.countries ='US'',但是整個init代碼需要一些更徹底的測試,所以我們應該確信你所做的也是被支持的。這可能是一個問題沒有找到匹配的參考選定的對象 – ProLoser 2013-02-20 18:47:19

+0

我編輯我的問題上面。謝謝你的幫助! – SethBoyd 2013-02-21 19:40:56

+0

plnkr甚至沒有工作。我討厭 – iamwhitebox 2013-03-06 17:46:21

回答

-1

您是否嘗試過初始化你的選擇是:

<option selected value="0">Name</option>