Angular UI选择选项问题

时间:2016-06-10 15:54:06

标签: angularjs angular-ui-select

我正在尝试使用角度UI选择,我遇到了问题。当我的表单加载时,选项似乎正确填充,但它没有从我的模型中选择的值。例如,下面的屏幕截图显示了一个优先级为(2)Normal的项目,但正如您所看到的,当表单加载时它似乎是空的。

enter image description here

然后,如果我选择其中一个选项并保存它以使用整个对象

{"text":"(2) Normal","value":"(2) Normal"} 

而不仅仅是值,但顶部显示为空。

<ui-select ng-model="currentItem.PriorityValue" theme="bootstrap" style="min-width: 300px;" title="Choose a priority">
    <ui-select-match>{{$select.currentItem.PriorityValue}}</ui-select-match>
    <ui-select-choices repeat="option in (data.priority.options |  filter: $select.search) track by option.value">
        <span ng-bind="option.text"></span>
    </ui-select-choices>
</ui-select>

编辑:如果它有帮助这就是我之前所做的工作,但现在我需要选择的过滤功能

<select class="form-control modal-input" id="PriorityValueInput" data-ng-options="option.value as option.text for option in data.priority.options" data-ng-model="currentItem.PriorityValue"></select>

2 个答案:

答案 0 :(得分:0)

我试图在下面的plunker中做同样的事情。希望这会对你有所帮助。

http://plnkr.co/edit/BQuiDDULwVJgRRzlRx4x?p=preview

<ui-select ng-model="ctrl.country.selected" theme="selectize" ng-disabled="ctrl.disabled" style="width: 300px;" title="Choose a country">
<ui-select-match placeholder="Select ">{{$select.selected.name}}</ui-select-match>
<ui-select-choices repeat="country in ctrl.countries | filter: $select.search">
  <span ng-bind-html="country.name | highlight: $select.search"></span>
  <small ng-bind-html="country.code | highlight: $select.search"></small>
</ui-select-choices>

并在控制器中选择页面加载选项

me.country.selected = {"name":"Albania","code":"AL"};

答案 1 :(得分:0)

我也遇到了和你一样的问题,所以我也想分享我的解决方案,所以我假设你的数据结构是 lst 。我知道您只存储或从数据库中获取值,因此我添加了过滤器以从 lst 中获取对象 ( 2)正常 并将其分配给 option.PriorityValue

  var lst = [
    {"text":"(1) High","value":"(1) High"}, 
    {"text":"(2) Normal","value":"(2) Normal"}, 
    {"text":"(3) Low","value":"(3) Low"} 
  ];
  $scope.data = {
      priority: {
        options: lst
      }
  };
  //You can change the value '(2) Normal'
  var newTemp = $filter("filter")(lst, {"value":'(2) Normal'});
  $scope.option = {
     PriorityValue: newTemp[0]
  }

以下是标记,如果您想在选择下拉列表时只获取值,请使用option.PriorityValue.value

  <ui-select ng-model="option.PriorityValue" theme="selectize" style="width: 300px;" title="Choose a priority">
      <ui-select-match placeholder="Select priority in the list...">{{$select.selected.value}}</ui-select-match>
      <ui-select-choices repeat="option in (data.priority.options |  filter: $select.search) track by option.value">
          <span ng-bind-html="option.text | highlight: $select.search"></span>
          <small ng-bind-html="option.value | highlight: $select.search"></small>
      </ui-select-choices>
  </ui-select>

以下是我为您所做的事情:

http://plnkr.co/edit/IIjSaHOHgzE9l2JV3b1Q?p=preview

抱歉我的英文。