Angular:如何将值从服务方法返回到范围变量

时间:2014-11-07 11:26:54

标签: angularjs service

我有以下服务方法和return语句。

this.partnersListForAutocomplete =  function (container, options) {
         $("#autocompletePartners").kendoAutoComplete({
             dataSource :  {
                 type: "json",
                 serverFiltering: true,
                 transport: {
                     read: function (options) {
                         console.log("List");
                         console.log(options.data);
                         requestParams = {
                             "entityName": "dvd",
                             "page": 1,
                             "pageSize": 20,
                             "filter": options.data.filter,
                             "sort": [
                                 {
                                     "field": "name",
                                     "ord": "asc"
                                 }
                             ]
                         };
                         ApiService.doHttpRequest(
                             "POST",
                             $rootScope.apiBaseUrl + "partner/search",
                             requestParams
                         )
                             .success(function (data, status, headers, config) {

                             })
                             .error(function (data, status, headers, config) {

                             });
                     }
                 }
             },
             dataTextField: "name"  ,
             dataValueField: "id",
             filter: "contains",
             minLength: 1,
             change  : function (e) {
                 // I WANT RETURN IT
                 return "test";

             },
             select  : function (e) {
                 // I WANT RETURN IT
                 return "test";
             }
         });
     };

此代码从控制器方法调用:

  selectedPartnerId = GlobalHelperService.partnersListForAutocomplete();

  $scope.projectDetail.test = selectedPartnerId;

问题是返回的值没有传递到选定的范围。

我该如何解决?

注意:自动完成的方法是assync。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我可以从头脑中想到几个选项:

您可以从partnersListForAutocomplete()方法返回promise,然后在控制器内部执行类似以下伪代码的操作:

GlobalHelperService.partnersListForAutocomplete()
    .then(function(response) {
        $scope.projectDetail.test = response;
    });

或者,接受对partnersListForAutocomplete()方法的回调,然后在控制器内部执行类似以下伪代码的操作:

GlobalHelperService.partnersListForAutocomplete(function(response) {
    $scope.projectDetail.test = response;
});