我正在尝试让一个控制器在使用时从服务器检索其数据,但是由于某种原因,这似乎无法正常工作:
app.controller('eventListController', ['$scope', '$http', '$routeParams', function ($scope, $http, $routeParams) {
var eventList = this,
getEventList = function () {
var promise = $http.get('../json/Login.json');
promise.then(function (response) {
eventList = response.data;
}, function (error) {
window.alert('Error' + error);
});
};
getEventList();
}]);
看起来很简单,但是eventList无法正确加载
我做错了什么?
JSON大致如下所示
{
"eventHead": [
{
stuff stuff
},
{
more stuff
}
],
"success": true
}
如果我做一个
window.alert(eventList);
之后
getEventList();
我得到[object Object],看起来很正常
但是如果我这样做
window.alert(eventList.success);
我不确定
而且我的数据只是没有加载到页面中
最佳答案
您不想使用结果覆盖this
(您的控制器)的引用(编辑:我的意思是,您不再引用控制器,而只是引用数据-在视图)。您想在控制器上设置属性-我认为您正在使用controller as
语法?在我认为您要实现的目标上,这样做会做得更好:
app.controller('eventListController', ['$scope', '$http', '$routeParams', function ($scope, $http, $routeParams) {
var that = this;
var getEventList = function () {
var promise = $http.get('../json/Login.json');
promise.then(function (response) {
that.eventList = response.data;
}, function (error) {
console.log('Error', error);
});
};
getEventList();
}]);
编辑:已经多次向我指出,以上(问题)语法是正确的。我同意-这只是不好的做法。您不应使用和换行符定义多个变量。我认为大多数javascript开发人员都会同意它不会增加可读性(我认为误读可以证明这一点)。