【问题标题】:Angular ui-select placeholder not working when ng-model is initialized初始化 ng-model 时,Angular ui-select 占位符不起作用
【发布时间】:2015-06-08 07:29:14
【问题描述】:

我试图在每次单击按钮时添加一个新的选择,

html:

 <div ng-repeat = "select in selects track by $index">
  <ui-select ng-model="selects[$index]" theme="select2" ng-disabled="disabled" style="min-width: 300px;">
    <ui-select-match placeholder="Select a person in the list or search his name/age...">{{$select.selected.name}}</ui-select-match>
    <ui-select-choices repeat="person in people">
      <div ng-bind-html="person.name | highlight: $select.search"></div>
    </ui-select-choices>
  </ui-select>
 </div>
 <button ng-click="addNewSelect()"> Add new select</button>

控制器:

  $scope.selects = [{}];
  $scope.addNewSelect = function() {
    $scope.selects.push({});
  }

对象数组保存在数组“selects”中,但占位符没有出现在选择中,因为我最初使用空对象初始化 ng-model。如何让他的占位符在这种情况下工作?

这里是Plunker

【问题讨论】:

    标签: javascript angularjs select angularjs-select2 ui-select


    【解决方案1】:

    在某些情况下,上述解决方案效果很好,而在某些情况下效果不佳。

    <ui-select ng-model="selectedChannel"
               on-select="$ctrl.channelSelected(selectedChannel)">
        <ui-select-match placeholder="Select Channel Type">
            {{selectedChannel.text}}
        </ui-select-match>
        <ui-select-choices ui-select-header-group-selectable="$ctrl.selectGroupHeader"
                           group-by="groupFindChannel"
                           repeat="channel in (r.channels | filter: $select.search) track by channel.id">
            <div ng-bind-html="channel.text | highlight: $select.search"></div>
        </ui-select-choices>
    </ui-select>
    

    ^ 在这里让占位符显示...只需制作

    $scope.selectedChannel = null;
    

    希望对你有帮助...

    【讨论】:

      【解决方案2】:

      添加 css display:block 占位符项的最快方法。

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

      【讨论】:

        【解决方案3】:

        您在selects[$index] 之后缺少.selected

        没有这个,ui-select 认为你选择了一个空对象(selects[$index])并且不会显示占位符。

        <ui-select ng-model="selects[$index].selected" theme="select2" ng-disabled="disabled" style="min-width: 300px;">
        

        http://plnkr.co/edit/56SHyE01BJ4EXglLlIcb?p=preview

        你也不需要使用索引查找,你可以使用select.selected

        <ui-select ng-model="select.selected" theme="select2" ng-disabled="disabled" style="min-width: 300px;">
        

        http://plnkr.co/edit/3Uq8lDtDOaj5mIZVrCfv?p=preview

        【讨论】:

        • 早期使用 angularstrap 选择,即使对象为空,最初的占位符也会出现,所以错过了,谢谢
        猜你喜欢
        • 2015-02-07
        • 1970-01-01
        • 1970-01-01
        • 2012-11-26
        • 1970-01-01
        • 2019-02-22
        • 1970-01-01
        • 2015-08-01
        • 1970-01-01
        相关资源
        最近更新 更多