设置 Angular-UI Select2 多个指令的初始值

Posted

技术标签:

【中文标题】设置 Angular-UI Select2 多个指令的初始值【英文标题】:Setting initial values of Angular-UI Select2 multiple directive 【发布时间】:2013-02-05 18:41:12 【问题描述】:

我有一个 select2 指令,用于多个国家/地区,并带有自定义查询来获取数据:

// 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'];

这确实正确设置了模型,但是这是在 select2 初始化发生之前发生的。当我逐步完成剩余的初始化代码时,输​​入会暂时显示[Object],然后最终将$scope.filters.countries 和输入消隐,但它不会在输入中显示占位符文本。

为了解决这个问题,我使用以下方法来重置模型的初始值:

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

使用setTimeout 似乎真的很骇人听闻。我错过了更好的方法吗?

更新 1

根据 ProLoser 的要求,这里有一个演示和 github 票。

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

GitHub 问题:https://github.com/angular-ui/angular-ui/issues/455

按照 ProLoser 的建议,我开始使用 select2 的 initSelection 函数:

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

它可以解决问题,但仍然感觉像是一种解决方法。

【问题讨论】:

你能为此创建一个演示并开一张票吗?如果你在 select2 中使用了initSelection(这是专门为它设计的),你可以只做$scope.filters.countries = 'US',但整个初始化代码需要一些更彻底的测试,所以我们应该确保你所做的也得到支持。找不到对所选对象的匹配引用可能是个问题 我在上面编辑了我的问题。感谢您的帮助! plnkr 甚至不起作用。我讨厌那个 您可以考虑按照 ProLoser 的建议创建一个可接受的答案。 如果“更新 1”解决了问题,请将其转换为答案并接受。 【参考方案1】:

根据 ProLoser 的要求,这里有一个演示和 github 票。

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

GitHub 问题:https://github.com/angular-ui/angular-ui/issues/455

按照 ProLoser 的建议,我开始使用 select2 的 initSelection 函数:

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

它可以解决问题,但仍然感觉像是一种解决方法。

【讨论】:

【参考方案2】:

您是否尝试过将选项初始化为:

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

【讨论】:

以上是关于设置 Angular-UI Select2 多个指令的初始值的主要内容,如果未能解决你的问题,请参考以下文章

Angular-ui select2 在将 Angular 与 twitter-bootstrap 混合时不起作用

select2、ng-model 和 angular

如何将选项更改传递给 Angular-UI ui-select2?

无法在编辑模式下设置多个选定值 select2

Select2 多个 - 如何设置空白默认值

如何为多个下拉菜单设置 jquery select2 的选定值?