Ale*_*erz 31 angularjs ui-select
我正在使用ui-select的选择框.一切正常,但我想允许手动输入文本,并且不希望限制用户使用列表中的可用值.如果我输入文本,它会正确过滤我的列表.但是,当我没有点击一个元素并继续前进到下一个字段时,我的文本将被丢弃.
有任何想法吗?
谢谢和问候,亚历克斯
我不想显示我的代码因为我认为它不正确,但它被要求:
<ui-select ng-model="formData[field.id].selected" theme="bootstrap">
<ui-select-match placeholder="{{ lists[field.id].placeholder }}">{{$select.selected.text}}</ui-select-match>
<ui-select-choices repeat="item in lists[field.id].list | filter: $select.search">
<div ng-bind-html="item.text | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
Run Code Online (Sandbox Code Playgroud)
数据存储在formData[field.id].selected.field.id是要显示的当前字段的编号(我动态生成表单).假设它存储一个唯一的int值.
编辑08.04.2015 我的解决方案: 我发现似乎没有相当于C#组合框.所以我继续使用了两个不同的领域.这不是我想要的,但它现在有效:
<ui-select ng-model="formData[field.id].selected" theme="bootstrap">
<ui-select-match placeholder="{{ lists[field.id].placeholder }}">{{$select.selected.text}}</ui-select-match>
<ui-select-choices repeat="item in lists[field.id].list | filter: $select.search">
<div ng-bind-html="item.text | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
<?php echo __('Create a new element if value is not in list'); ?>
<div class="input-group">
<span class="input-group-addon">
<input type="checkbox" ng-model="disabled[field.id]">
</span>
<input type="text" value="" ng-disabled="!disabled[field.id]" class="form-control" ng-model="formData[field.id].newValue" />
</div>
Run Code Online (Sandbox Code Playgroud)
sil*_*Arc 43
这是一个解决方案:
HTML -
<ui-select ng-model="superhero.selected">
<ui-select-match placeholder="Select or search a superhero ...">{{$select.selected}}</ui-select-match>
<ui-select-choices repeat="hero in getSuperheroes($select.search) | filter: $select.search">
<div ng-bind="hero"></div>
</ui-select-choices>
</ui-select>
Run Code Online (Sandbox Code Playgroud)
控制器 -
$scope.getSuperheroes = function(search) {
var newSupes = $scope.superheroes.slice();
if (search && newSupes.indexOf(search) === -1) {
newSupes.unshift(search);
}
return newSupes;
}
Run Code Online (Sandbox Code Playgroud)
这是CodePen解决方案.
Pau*_*amp 13
我想我找到了一种允许用户创建新条目的方法.使用"on-select"属性传递一个以$ select作为参数的函数,如下所示:
<ui-select ng-model="person.selected"
theme="select2"
on-select="peopleSel($select)"
tagging
reset-search-input="false"
>
<ui-select-match placeholder="Enter a name...">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="sel in people | filter: {name: $select.search}">
<div ng-bind-html="sel.name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
Run Code Online (Sandbox Code Playgroud)
然后创建在clickTriggeredSelect变量为false时添加新条目的函数:
$scope.peopleSel= function(sel) {
if ( sel.search && ! sel.clickTriggeredSelect ) {
if ( ! sel.selected || sel.selected.name != sel.search ) {
//Search for an existing entry for the given name
var newOne= personSearch( sel.search );
if ( newOne === null ) {
//Create a new entry since one does not exist
newOne= { name: sel.search, email: 'none', country: 'unknown' };
$scope.people.push( newOne );
}
//Make the found or created entry the selected one
sel.selected= newOne;
}
}
sel.search= ''; //optional clearing of search pattern
};
Run Code Online (Sandbox Code Playgroud)
请注意,此处未提供personSearch定义.此外,这种测试clickTriggeredSelect的方法可用于允许用户取消选择该字段(如果空白条目是首选项).
PVC
您可以使用标记属性,如文档中所述:https: //github.com/angular-ui/ui-select/wiki/ui-select
<ui-select multiple tagging tagging-label="(custom 'new' label)" ng-model="multipleDemo.colors">
...
</ui-select>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26657 次 |
| 最近记录: |