我正在尝试使用我的一个控制器中的promises实现一个基本功能,这样我就可以确保它在添加更复杂的功能之前正常工作。我在lockPromise方法中的“.then(function(data){”中得到“TypeError:undefined is not function”。
从视图调用的函数
$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 : 更新代码以反映评论
答案 0 :(得分:1)
更改
$scope.getLockMessage2(fieldId).then
到
$scope.getLockMessage2(fieldId).getWeather().then
答案 1 :(得分:0)
$ scope.getLockMessage2返回一个对象,而不是函数。
我认为代码应该(未经过测试):
$scope.lockPromise = function(fieldId) {
$scope.getLockMessage2(fieldId).getWeather()
.then(function(data) {
if (data === "good") {
alert("data is good");
} else {
alert("FAILED");
}
}, function(error) {
alert(error);
});
};