Wijmo Autocomplete & AngularJS - 从加载的数据设置初始值

Wijimo Autocomplete & AngularJS - setting initial value from loaded data

我正在尝试在从外部数据源加载的 Wijimo 自动完成控件中设置初始值。作为表单的场景用于创建一些新数据然后保存。随后需要编辑数据,以便将其重新加载到表单中。

我可以在初始表单上成功使用自动完成 - 源列表是一个 JSON 对象数组,已加载到控制器中。该应用程序正在使用 UI 路由器,所以我先解决这个问题。

当我保存数据时,我从自动完成控件中序列化选定的对象,然后保存到 Mongo 数据库存储中。将此数据重新加载时,它会转换回对象。

控件的外观如下:

 <wj-auto-complete
                            selected-index="selectedIndexCombo"
                            selected-item="selectedAirline"
                                      items-source="airlineCodes"
                                      display-member-path="Title"
                                      placeholder="Airline Code"
                                      max-items="50"/>

源列表的示例如下所示:

{
    "@href":"\/airline.nsf\/api\/data\/collections\/name\/(LUAirlines)\/unid\/8DCD734E7BCDA24D80257C99003770C4",
    "@link":
    {
      "rel":"document",
      "href":"\/airline.nsf\/api\/data\/documents\/unid\/8DCD734E7BCDA24D80257C99003770C4"
    },
    "@entryid":"98-8DCD734E7BCDA24D80257C99003770C4",
    "@unid":"8DCD734E7BCDA24D80257C99003770C4",
    "@noteid":"FB2",
    "@position":"98",
    "@siblings":100,
    "@form":"Airline",
    "AirlineCode":"WN",
    "Airline":"Southwest Airlines",
    "Title":"WN - Southwest Airlines"
  }

因此,当最初创建表单时,控制器 属性 selectedAirline 已正确设置为所选对象。

所以这在保存功能中工作正常:

  $scope.formData.selectedAirline = JSON.stringify($scope.selectedAirline);

但是在重新加载数据时:

AirlineInfoFactory.loadAirlineInfo($scope.reference).then(function success(response) {
                $scope.selectedAirline = eval('(' + response.data.selectedAirline + ')');
                $scope.information = response.data.information;
                $scope.dataLoaded = true;
                console.log($scope.selectedAirline)
                $scope.selectedIndexCombo=11;
            })

自动完成控件未绑定到所选航空公司 属性。

我尝试在指令上使用 selected-index 属性,看看是否可以在数据加载时将其更改为某些内容,但它也不起作用。我怀疑它与摘要循环有关,但我不确定。

有什么想法吗?

谢谢

我试图通过重新加载数据和设置 selectedAirline 属性 来复制场景,并且它与最新版本 32 一起运行良好。这是 fiddle: http://jsfiddle.net/n1kpkcud/2/

 ` $scope.countries = initialList;
   $scope.selectedAirline = '';
   $scope.setItem = function () {
       $scope.countries = reloading;
       $scope.selectedAirline = 'Yemen';
   }`

我建议您更新此 fiddle 以便它重现该问题,我可以相应地向您提出建议。