0

我正在使用https://github.com/localytics/angular-chosen来允许选择具有许多选项搜索功能的标签。

我遇到的问题是在已保存的供应商对象上预先选择一个选项。当创建一个新的时,现在有问题,但是如果我们正在查看一个现有的供应商,我想在选择框中显示供应商的名称,而不是占位符。

<select chosen 
        ng-model="myVendor" 
        ng-options="vendor['public-id'] as vendor.name for vendor in vendors" 
        data-placeholder="Nah">
</select>

在我的控制器中,我手动设置模型$scope.myVendor = "Some value"

问题是我使用对象而不是键/值填充选项。我发现了一个使用键/值的示例,但尚未成功地将其作为选项应用于对象。

我什至尝试设置myVendor为我想要选择的匹配对象,但没有运气。

问题的麻烦

4

1 回答 1

1

我更新了plunker并更改了我之前对插件的更改。这不是问题所在。我不明白它是如何给我带来错误的。解决方案是使用一个对象和两个函数来跟踪 id 和 name:

// 控制器

 $scope.vendors = [
    {
      "public-id": "1234",
      "name": "stugg"
    },
    {
      "public-id": "4321",
      "name": "pugg"
    }
  ];
  $scope.myVendor = {name: "pugg", id:""};

  $scope.updateMyVendorName = function () {
    var found = false,
    i = 0;
    while (!found && i < $scope.vendors.length)  {
      found = $scope.vendors[i]['public-id'] === $scope.myVendor.id;
      if (found) {
        $scope.myVendor.name = $scope.vendors[i].name;
      }
      i++;
    }
  }

  findVendorByName();

  function findVendorByName () {
        var found = false,
    i = 0;
    while (!found && i < $scope.vendors.length)  {
      found = $scope.vendors[i]['name'] === $scope.myVendor.name;
      if (found) {
        $scope.myVendor.id = $scope.vendors[i]['public-id'];
      }
      i++;
    }
  }

// 模板

<select chosen class="form-control span6" ng-options="vendor['public-id'] as vendor.name for vendor in vendors" ng-model="myVendor.id" ng-change="updateMyVendorName()">

{{myVendor.name}}
于 2015-06-29T08:31:32.590 回答