5

我们一直在使用 ui-select ( https://github.com/angular-ui/ui-select ) 来主题下拉菜单,例如 select2。此功能在很大程度上与一个方面不同:默认占位符。

该代码主要遵循 ui-select 演示(此页面上的第三个示例:http ://plnkr.co/edit/a3KlK8dKH3wwiiksDSn2?p=preview )。

就我而言,默认文本应该是“占位符”属性的文本。相反,它显示为空白,直到您选择一个选项。我们一直在使用一种技巧,即在 Angular 控制器中设置 ui-select-match 的值来解决这个问题,但这远非完美,显然也不是应该如何使用它。

<ui-select data-ng-model="producttype.selected" theme="select2" name="product-type">
    <ui-select-match placeholder="Select a product type">
        {{$select.selected.title}}
    </ui-select-match>
    <ui-select-choices repeat="producttype in productTypeOptions | filter: $select.search">
        <span ng-bind-html="producttype.title | highlight: $select.search"></span>
    </ui-select-choices>                                               
</ui-select>

有没有人遇到过这个问题,或者对我们做错了什么有任何想法?

4

7 回答 7

3

当控制器中有其他东西绑定到 ng-model 时,我遇到了这个问题,比如producttype.selected. 另一个绑定将初始化模型并使 ui-select 指令表现得好像已经做出了选择一样。

如果这是您的问题,on-select回调有助于将 ui-select 绑定到另一个对象,然后使用将您想要的数据合并回原始对象。

于 2015-01-13T21:54:07.107 回答
3

如果您禁用搜索,即使没有选择,这也会隐藏占位符。

占位符 span 元素:

<span ng-show="$select.searchEnabled && $select.isEmpty()" class="select2-chosen ng-binding ng-hide">My Placeholder</span>

刚刚删除了模板 .js 文件中的“$select.searchEnabled &&”,占位符将再次出现。

正如github 上的 hthabet所见

于 2015-01-14T11:57:00.717 回答
1

如果您绑定到的模型是对象的一部分并且具有键/值对,其中键存在但值为空,您也会遇到此问题。

<ui-select ng-model="vm.selectedItem.ID">....

这是被引用的对象:

vm.selectedItem = {
  ID: null,
  description: null
}

这也会导致空白选择,从而阻止显示占位符。我目前正在研究解决方案。

于 2015-12-11T17:41:07.280 回答
0

您可以做两件事来修复它,而不是编辑源代码。

  1. 打开 enableSearch 如下所示。

    $scope.enableSearch = function () { $scope.searchEnabled = true; };

  2. 或者查看@TDing提到的内容或@Steve Ellis 在这篇文章中的回答。

于 2017-08-23T22:37:44.950 回答
0

当搜索项关闭或绑定元素为空时,UI 选择不起作用。添加 css display:block 占位符项的最快方法。

.select2-chosen{
   display: block !important;
}

或者您可以编辑 ui-select.js。

于 2017-02-01T07:12:07.253 回答
0

这里的问题在于 select.js 文件中的 isEmpty 检查。

只需替换此检​​查

值 = ctrl.selected; angular.isUndefined(值) || 值 === 空;

angular.isUndefined(值) || 值 === 空 || angular.equals({}, value);

于 2018-09-26T05:56:55.337 回答
0

查看分配给占位符的引导类“文本静音”。它有一个设置字体颜色“白色”的属性。所以试着评论这个属性。它对我有用。

于 2016-04-21T10:16:06.103 回答