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