【问题标题】:Angular Service doesn't return valueAngular Service 不返回值
【发布时间】:2017-05-17 08:20:34
【问题描述】:

我在 MVC 中使用 angularjs。

这里是我的 Controller.js:

//Get User By ID
$scope.GetUserById = function (UID) {
     var Get = UserService.GetUserById(UID);
     Get.then(function (response) {
           $scope.User = response.data;
           alert($scope.User.Address);
     });
};

services.js:

    //Get By ID
    this.GetUserById = function (UID) {
          debugger;
          return $http.get("../api/UsersData/GetUserById?UID=" + UID);
    };

当我使用调试器时,会显示警告消息。如果我不调试,那么它不会返回值。

我的代码有什么问题?

如何将值显示到html页面?

【问题讨论】:

  • 尝试添加一个'return $scope.User;'或'返回 response.data;'在警报之后。
  • 尝试实现返回承诺的“错误功能”。
  • 你有没有尝试使用回调函数
  • 想根据id显示用户详情
  • return $scope.User : 它不工作

标签: angularjs model-view-controller asp.net-web-api


【解决方案1】:

你应该通过一些调整让它工作。

Service.js:

angular.module('myApp').factory('MyService', MyService);

//Avoid Minification Problems
MyService.$inject = [ '$http' ];

function MyService( $http ){

    function GetUserById(UID){
      return $http.get('../api/UsersData/GetUserById?UID=' + UID)
                      .then( function (response) {
          if(response){
            return response;
          }
      });
    }

    //Expose Method to External Calls
    return {
             GetUserById : GetUserById
    }

}

Controller.js:

angular.module('myApp').controller('MyController', MyController);

MyController.$inject = [ '$scope', 'MyService' ];

function MyController( $scope, MyService ){

  $scope.GetUserById = function(UID){
    MyService.GetUserById(UID).then( function(response){
     $scope.User = response.data;
     alert($scope.User.Address);
    });
  }

}

确保 response 实际返回的是 $log 或使用 console.log 以正确提醒地址。在服务中也做这个检查,例如你应该检查response.address是否存在。

您也可以使用 Service 代替 Factory

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2018-04-02
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    相关资源
    最近更新 更多