以前在我的角度控制器里,我有:
var getResponse = function () {
$http.post("api/screen/", { Key: 'banana', value: null })
.then(onComplete, onError);
};
var onError = function (reason) {
$scope.error = "Fail";
};
var onComplete = function (response) {
$scope.s = response.data;
};
getResponse()我能够通过HTML页面上的数据绑定看到{{ s }}。
然后,我决定通过使用以下方法创建一个单独的服务来重构控制器:
var postScreen = function () {
return $http.post("api/screen/", { Key: 'banana', value: null });
}我的控制器中有这个( onComplete,onError和以前一样)
var getResponse = function () {
formulaservice.postScreen(onComplete, onError);
}现在{{ s}不显示在HTML页面的数据绑定上。
发布于 2014-08-25 15:30:32
在这里,您使用两个参数调用postScreen函数,但是它不采用定义它的任何方式:
var getResponse = function () {
formulaservice.postScreen(onComplete, onError);
}相反,请使用.then在其完成后挂钩。
var getResponse = function () {
formulaservice.postScreen().then(onComplete, onError);
}发布于 2014-08-25 15:38:51
您的新postScreen()函数正在返回一个角承诺对象。您需要调用诺言对象上的.then()来执行您想做的事情。我建议将您的服务函数更改为将回调方法作为参数。
var postScreen = function (successCallback, errorCallback) {
$http.post("api/screen/", { Key: 'banana', value: null })
.success(function(result) {
successCallback(result);
})
.error(function(error) {
errorCallback(error);
});
}或者,您可以在服务方法上调用.then:
var getResponse = function () {
formulaservice.postScreen().then(function() {
//do something with onComplete, onError
});
}https://stackoverflow.com/questions/25489243
复制相似问题