我有多個選擇自定義查詢國家的選擇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);
},
它的伎倆,但仍然感覺就像一個解決方法。
您可以創建一個演示這個,也許開罰單? 如果你在select2中使用'initSelection'(這是特別爲此設計的),你可以只執行'$ scope.filters.countries ='US'',但是整個init代碼需要一些更徹底的測試,所以我們應該確信你所做的也是被支持的。這可能是一個問題沒有找到匹配的參考選定的對象 – ProLoser 2013-02-20 18:47:19
我編輯我的問題上面。謝謝你的幫助! – SethBoyd 2013-02-21 19:40:56
plnkr甚至沒有工作。我討厭 – iamwhitebox 2013-03-06 17:46:21