2016-01-13 71 views
0
//Load Property Types 
$scope.getAddressByPostcode = function() { 
    PostCodeLookup.getAddress(function(postCodeAddress,'NN4 5DT') { 
    $scope.postCodeAddress = postCodeAddress; 
    console.log($scope.postCodeAddress); 
    }); 
}; 

我在控制器中有上述代碼。 下面是我在我的角度廠帶參數的角度回調

'use strict'; 

angular.module('core').factory('PostCodeLookup', ['$http', function($http) { 
var apService = 'https://api.postcodes.io'; 

function getAddressByPostcode(callback,postcode) { 
    $http({ 
     method: 'GET', 
     url: apService+ '/postcodes/'+postcode, 
     cache: true 
    }).success(callback); 
} 
return { 
    getAddress: getAddressByPostcode 
}; 
}]); 

我有參數傳遞給我的getAddressByPostcode與回調一起問題。

是否角度不處理與params回調。

回答

0

它看起來像你的代碼應該是這樣的:

$scope.getAddressByPostcode = function() { 
    PostCodeLookup.getAddress(function(postCodeAddress) { 
    $scope.postCodeAddress = postCodeAddress; 
    console.log($scope.postCodeAddress); 
    },'NN4 5DT'); 
}; 

通知郵政編碼參數的位置。

由於@Martijn建議,更好的解決方法就是從你的工廠函數返回一個承諾:

function getAddressByPostcode(postcode) { 
    return $http({ 
     method: 'GET', 
     url: apService+ '/postcodes/'+postcode, 
     cache: true 
    }); 
} 
return { 
    getAddress: getAddressByPostcode 
}; 

然後使用它是這樣的:

PostCodeLookup.getAddress('NN4 5DT').then(function(result) {    
    $scope.postCodeAddress = result.data; 
    console.log($scope.postCodeAddress); 
}); 
+1

這將是更好的返回一個承諾和處理的一個。於是控制器而不是使用回調 –

+0

是的。我同意,讓調用者決定如何處理成功/錯誤。 – pixelbits

+0

是的,謝謝你的回覆,是的,我可以做到這一點,但只是探索是否有辦法用回調做參數。 – user2717619

0

也許這個代碼片段有助於利用參數回調:

創建回調對象:

function createCallback(p_context, p_function, p_params) { 

    if(angular.isFunction(p_function)) { 
    var callback = { 
     'context': p_context, 
     'function': p_function, 
     'params': p_params 
    }; 

    return callback; 
    } else { 

    logger.error('createCallback(context, function, params): function not defined'); 
    } 
} 

執行回調:

function executeCallback(p_cb) { 

    var callback = p_cb; 

    cb['function'].call(cb['context'], cb['params']); 
} 

結束語在服務,它是可重複使用...

電賀 基督教