使用ui-select2
时,您必须在initSelection
配置对象中提供select2
功能。如果不这样做,您将收到错误(但功能不会受到影响。一切都将按预期工作)。
为了说明,请参阅this plunkr。当您从下拉菜单中选择一个项目时,它会起作用,但您会收到以下错误:
错误:如果未定义initSelection(),则无法调用val()
向initSelection
添加空函数可修复错误。你可以在上面的plunkr中取消注释它。
using ui-select2
in conjunction with ng-repeat
时,它只是不更新模型。
控制器:
// for this demo, `users` is injected into the controller
$scope.users = users.slice(0, 2);
$scope.select2Config = {
placeholder: 'Select User...',
query: function ( options )
{
// `users` in this demo is injected into the controller.
// in the real world this would be an ajax request
options.callback({ results: users });
},
// Without initSelection, I get the above error.
// Regardless, the model isn't updated.
initSelection: angular.noop,
formatSelection: select2format,
formatResult: select2format,
};
function select2format ( user )
{
return user.first + ' ' + user.last;
}
查看:
<ul>
<li ng-repeat="user in users">
<input type="text" ng-model="user" ui-select2="select2Config">
</li>
</ul>
从下拉列表中选择项目时,不会更新模型。如果配置中没有initSelection
,我会收到上述错误,但添加它仍然不会更新模型。
Here's a plunkr demonstrating the above
如何在ui-select2
?
ng-repeat
更新模型
答案 0 :(得分:0)
尝试使用继承:
http://plnkr.co/edit/jyJaYU4DQX1LROD6nQaw?p=preview
此外,我正在呼叫&#34;用户和#34;在ng-repeat上,然后还将ng-model设置为&#34; user&#34;。我不知道为什么。
至于initSelection行为,我没有答案。
我更新了plunker。 ng-repeat指令创建一个新的范围 - true,但它的所有子节点(或重复的项目)都是兄弟节点。你绑定了#34;用户&#34; (由ng-repeat定义/转换)到每个选择的ng-模型(并且如果你改变了模型,则期望&#34;用户&#34;阵列将被更新)。
我相信ng-repeat是一种单向绑定top down
因此,我展示的是正确的,但不可否认的是懒惰。我将两个选择绑定到相同的模型,但我很容易将它们绑定到&#34;选择&#34;使用$ index的对象。要点是:如果你想要双向绑定,那么写一个新的指令,但是更容易做类似于我所展示的事情。
PS:在实践中,我填写了一个&#34;查找&#34;具有一些用于选择/下拉的数组的对象,并使用一个名为&#34; user&#34;的单独对象。保存用户选择的内容。这几乎是从(较旧的)文档中删除的。