0
我想在我的控制器之一中使用promise来实现一个基本功能,以便在添加更复杂的功能之前确保它正常工作。我得到一个“类型错误:未定义的是不是一个功能”上的“然后(功能(数据){”在lockPromise方法在angularjs控制器中的承诺 - 如何实现
功能从视图
$scope.lockPromise = function(fieldId) {
$scope.getLockMessage2(fieldId).getWeather()
.then(function(data) {
if (data === "returned SUCCESS info") {
alert("data is good");
} else {
alert("FAILED");
}
}, function(error) {
alert(error);
});
};
二函数调用。在CTRL
$scope.getLockMessage2 = function(fieldId) {
return{
getWeather: function() {
return $http.get('/api/getData')
.then(function(response) {
if (typeof response.data === "string") {
return response.data;
} else {
return $q.reject(response.data);
}
}, function(response) {
return $q.reject(response.data);
});
}
};
};
API GET
[Route("api/getData")]
public HttpResponseMessage GetData()
{
string data = JsonConvert.SerializeObject("returned SUCCESS info");
return new HttpResponseMessage
{
Content = new StringContent(data, Encoding.UTF8, "application/json")
};
}
编辑1: 代码更新,以反映意见
那'2nd'功能应该是在服务页面,而比内部控制器的启动。你几乎就在那里,只需要在你返回数据的地方做一些小改动。请参阅http://chariotsolutions.com/blog/post/angularjs-corner-using-promises-q-handle-asynchronous-calls/ – 2014-10-20 10:15:47
'$ scope.getLockMessage2(fieldId).getWeather()'你正在返回对象而不是函数 – harishr 2014-10-20 10:22:05
@RoyMJ我打算在测试后把它放入一个服务中 - 我知道这是微不足道的,但是服务的必要性是什么? – alsco77 2014-10-20 10:23:41