Javascript 角度ui选择占位符不工作

Javascript 角度ui选择占位符不工作,javascript,angularjs,select,angularjs-select2,ui-select,Javascript,Angularjs,Select,Angularjs Select2,Ui Select,我们一直在使用uiselect()来设置select2这样的下拉菜单的主题。此功能主要是从一个方面开始工作的:默认占位符 代码主要遵循ui选择演示(本页第3个示例:) 就我而言,默认文本应该是“占位符”属性的文本。相反,在您选择选项之前,它将显示为空白。我们一直在使用一种方法,通过在Angular controller中设置ui select match的值来解决这个问题,但这远远不够完美,而且显然不应该使用它 <ui-select data-ng-model="producttype.s

我们一直在使用uiselect()来设置select2这样的下拉菜单的主题。此功能主要是从一个方面开始工作的:默认占位符

代码主要遵循ui选择演示(本页第3个示例:)

就我而言,默认文本应该是“占位符”属性的文本。相反,在您选择选项之前,它将显示为空白。我们一直在使用一种方法,通过在Angular controller中设置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>

{{$select.selected.title}

以前是否有人遇到过此问题,或者是否知道我们做错了什么?

我在控制器中绑定到ng模型时遇到了此问题,如
producttype.selected
。另一个绑定将初始化模型,并使ui select指令的行为如同已经做出选择一样


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

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

占位符span元素:

<span ng-show="$select.searchEnabled && $select.isEmpty()" class="select2-chosen ng-binding ng-hide">My Placeholder</span>
我的占位符
刚刚删除了template.js文件中的“$select.searchEnabled&&”,占位符将再次出现


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

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

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

查看分配给占位符的引导类“文本静音”。
它具有设置字体颜色“白色”的属性。所以试着对这个属性进行注释。它对我有效。

当搜索项关闭或绑定元素为空时,Ui select不起作用。添加css显示的最快方法是:块占位符项

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

也可以编辑ui-select.js

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

  • 启用enableSearch,如下所示

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

  • 或者看看@TDing或@Steve Ellis在这篇帖子上的回答


  • 这里的问题是select.js文件中的isEmpty签入

    只要换掉这张支票

    value=ctrl.selected; 角度.isUndefined(值)| |值===null


    角度.isUndefined(value)| | value==null | | angular.equals({},value)

    干杯。我对此进行了研究,但这似乎不是问题,因为当时我在页面上只有一个模型。问题是我绑定的“.selected”变量被初始化为{},这使插件认为我已经选择了一个项目。我把它初始化为null,它就工作了
    .select2-chosen{
       display: block !important;
    }