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

时间:2015-02-03 13:34:06

标签: wijmo

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

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

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

这是控件的样子:

 <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;
            })

自动完成控件不会绑定到selectedAirline属性。

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

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:2)

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

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

我建议你更新这个小提琴,以便复制这个问题,我可以据此给你建议。