【问题标题】:how to set a default value for angular ui-select如何为角度 ui-select 设置默认值
【发布时间】:2015-02-21 18:43:27
【问题描述】:

问题:

如何将默认值设置为 angular ui-select

下拉值是从对象中获取的,对象不会有默认值。

并且 ui-select 应该在 Frontend 中设置默认值。

例如:

下拉值如下

1 - 所有水果 2 -苹果 3-香蕉 4-西瓜

2 到 4 的值来自服务器发送的对象。但前端需要设置默认值,即 1 - 所有水果

参考下面通过 ui-select2 设置的例子,如何在 ui-select 中迁移这个?

<select ng-model="fID" class="select"  ui-select2 data-placeholder="select fruit">
            <option value="">All fruits</option>
            <option ng-repeat="f in frits value="{{f.fID}}">{{f.name}}</option>
        </select>

<ui-select theme="select2" ng-model="fruits.selected">
            <ui-select-match placeholder="select please" allow-clear="false">                    {{$select.selected.name}}
</ui-select-match>
            <ui-select-choices repeat="f in fruits | filter:$select.search">
                <div ng-bind-html="f.name | highlight: $select.search:'underline'"></div>
            </ui-select-choices>
        </ui-select>

http://plnkr.co/edit/a3KlK8dKH3wwiiksDSn2?p=preview https://github.com/angular-ui/ui-select 链接:angular-ui/ui-select

【问题讨论】:

标签: javascript angularjs ui-select2 ui-select


【解决方案1】:

您没有为选项值使用 id 或类似的东西,因此 ui-select 比较对象地址以了解它是否被选中。

var p1 = { name: 'Adam',      email: 'adam@email.com',      age: 10 };
  $scope.person = {selected: p1};
  $scope.people = [
    p1,
    { name: 'Amalie',    email: 'amalie@email.com',    age: 12 },
    { name: 'Wladimir',  email: 'wladimir@email.com',  age: 30 },
    { name: 'Samantha',  email: 'samantha@email.com',  age: 31 },
    { name: 'Estefanía', email: 'estefanía@email.com', age: 16 },
    { name: 'Natasha',   email: 'natasha@email.com',   age: 54 },
    { name: 'Nicole',    email: 'nicole@email.com',    age: 43 },
    { name: 'Adrian',    email: 'adrian@email.com',    age: 21 }
  ];

像这样改变 plunker,你将有一个默认的选择值。

要在视图上设置默认值,您可以使用 ng-init 并将第一个对象设置为选中

【讨论】:

  • 我们也可以设置 $scope.person.selected = p1 ;
  • 我没听懂你想说什么?
  • 我也没有明白,你只展示了后端应该做什么,而不是指令本身应该做什么。
  • 我今天将为这个@AqibMumtaz 创建 plunkr
【解决方案2】:

在您的控制器中添加以下代码:

 $scope.fruits.selected = {name: 'All fruits'};

以上将默认选择的值设置为下拉。

【讨论】:

    【解决方案3】:

    我找到了这个工作示例:http://jsfiddle.net/NfPcH/28/

    角度代码:

    <a href="#" editable-select="user.status" e-ng-options="s.value as s.text for s in statuses">
        {{ showStatus() }}
      </a>
    

    控制器:

    app.controller('Ctrl', function($scope, $filter) {
      $scope.user = {
        status: 2
      }; 
    
      $scope.statuses = [
        {value: 1, text: 'status1'},
        {value: 2, text: 'status2'},
        {value: 3, text: 'status3'},
        {value: 4, text: 'status4'}
      ]; 
    
      $scope.showStatus = function() {
        var selected = $filter('filter')($scope.statuses, {value: $scope.user.status});
        return ($scope.user.status && selected.length) ? selected[0].text : 'Not set';
      };
    });
    

    【讨论】:

    • 嗨 Aqib,请尝试在您的答案中包含代码 sn-p
    • Stackoverflow 在附加 url 时出现问题
    • 是的,如果您在链接中包含一行答案,现在您可以以适当的方式更新您的链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2020-11-14
    相关资源
    最近更新 更多