7

我正在制作一个 Angular 应用程序,并且开始使用一些 Kendo UI 控件。我在连接 AutoComplete 控件时遇到了一些问题。我想使用一个工厂,它将从我的数据库中返回“自动完成”值的列表。

我已经包含了自动完成控件,并且正在尝试使用 k-options 属性:

<input kendo-auto-complete ng-model="myFruit" k-options="FruitAutoComplete"  />

在我的控制器中,以下硬编码的水果列表起作用:

 $scope.FruitAutoComplete = {
            dataTextField: 'Name',
            dataSource:[
                { id: 1, Name: "Apples" },
                { id: 2, Name: "Oranges" }
            ]
}

当我将它移到使用我的工厂时,我看到它调用并从工厂返回数据,但它永远不会绑定到屏幕上。

 $scope.FruitAutoComplete = {
            dataTextField: 'Name',
            dataSource: new kendo.data.DataSource({
                transport: {
                    read: function () {
                        return    FruitFactory.getYummyFruit($scope.myFruit);
                    }
                }
            })
        }

我最终的请求永远不会被自动完成。 在此处输入图像描述

我的工厂只是退回了一系列水果 [我的水果工厂代码:

     getYummyFruit: function (val) {
                    return $http.get('api/getFruitList/' + val)
                        .then(function (res) {                          
                            var fruits= [];
                            angular.forEach(res.data, function (item) {
                                fruits.push(item);
                            });
                            return fruits;
                        });
                }
4

1 回答 1

8

这是您的解决方案

http://plnkr.co/edit/iOq2ikabdSgiTM3sqLxu?p=preview

为了 plnker,我没有添加 $http(更新 - 这里是http://plnkr.co/edit/unfgG5?p=preview和 $http)更新 2 - http://plnkr.co/edit/01Udw0sEWADY5Qz3BnPp? p=根据@SpencerReport 预览已修复的问题

控制器

$scope.FruitAutoCompleteFromFactory = {
            dataTextField: 'Name',
            dataSource: new kendo.data.DataSource({
                transport: {
                    read: function (options) {
                        return  FruitFactory.getYummyFruit(options)

                    }
                }
            })
        }

工厂 -

factory('FruitFactory', ['$http',
  function($http) {
    return {
      getYummyFruit: function(options) {
        return $http.get('myFruits.json').success(
          function(results) {
            options.success(results);
          });

      }
    }
  }
于 2014-08-12T17:20:19.630 回答