2017-01-03 51 views
0

進出口使用angularjs。角服務不MVC返回值

這裏我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頁面?

+0

嘗試添加 '返回$ scope.User;'或'return response.data;'警報之後。 – rrd

+0

也嘗試實現返回諾言的'錯誤功能'。 – ricky

+0

沒有ü嘗試使用回調函數 –

回答

0

你應該得到它與一些調整工作。

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

您還可以使用服務而不是工廠