2012-12-20 71 views
0

我正在使用AngularUI的ui-select2指令和AJAX。AngularUI select2通过模型设置的AJAX

这是我在我的观点已经得到了:

<label>Group: <input ng-model="group" ui-select2="select2GroupConfig"></label> 

下面是我在我的模型:

$scope.select2GroupConfig = { 
    ajax: { 
     url: 'theURL', 
     data: function (term, page) 
     { 
      return { q: term }; 
     }, 
     results: function (data, page) 
     { 
      return { results: data }; 
     } 
    } 
}; 

可正常工作。


我的问题:我如何更新通过模型中的价值?

我想:

$scope.group = 'some group'; 

我也使用对象的尝试:

$scope.group = { id: 32, text: 'some group'}; 

但也不起作用。

如何通过模型更新使用AJAX的select2?

回答

1

原来你可以将其设置为一个对象,但只有在ui-select2运行;我试图给它一个初始值。

因此,而不是使用常规的模式,你必须使用select2initSelection功能:

$scope.group = 'Dummy Content'; 

$scope.select2GroupConfig.initSelection = function (el, fn) { 
    fn({ id: 2, text: 'Some group' }); 
} 

请注意,你必须给输入的初始值,否则initSelection不会被调用。这就是为什么我只是将它设置为一些虚拟内容。


这有效,但它感觉像一个黑客。

有没有人有更好的想法?

+0

”请注意,你必须给输入一个初始值“ 我已经在很多地方看过这个评论,但是如何提供一个初始值。我试着通过ng-model来设置它,但似乎并没有触发initSelection – aamiri

0

如果您有initSelection设置,您只能传递ID并且指令会拉起整个行对象。

这也可以让你设置页面加载时的值。

如果您不想使用initSelection,则可以将整个行(对象)设置为值,并且select2将相应地更新。这一切都取决于你的使用情况。 “