【问题标题】:Angular Chosen default not working with objectAngular 选择的默认值不适用于对象
【发布时间】:2023-03-22 10:58:01
【问题描述】:

我正在使用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"

问题是我使用对象而不是键/值填充选项。我发现它的 example 使用键/值,但没有成功地将其作为选项适应对象。

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

Plunker of issue

【问题讨论】:

    标签: javascript angularjs jquery-chosen angular-chosen


    【解决方案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}}
    

    【讨论】:

    • 它对你有用吗?我仍然看到占位符,而不是在您链接的 plunker 中选择的 pugg
    • 是的,对不起,我在这些行上遇到了控制台错误,我忘记了实际问题。问题是您使用 name 属性作为模型,但选择选项是 tracket bu public-id。所以你必须迭代选项以找到匹配的选项,我会更新 plunker
    • 这就是要点。我正在实现它有点不同,但模型结构正是我所需要的。非常感谢您的帮助,@Raulucco
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2020-06-07
    • 2019-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多