将 $http 请求发送到服务和工厂的可接受方法是什么?到目前为止我发现的唯一方法感觉 Controller 中的代码太多了。我觉得服务和/或工厂应该完成所有繁重的工作,并且应该从那里返回数据,但如以下代码所示,我正在 Controller 内进行成功调用。
我不认为这是正确的做事方式,但这是迄今为止我发现的唯一可行的方式。
(在我的服务对象内)
this.monsterList = $http.get('data/monsters.json');
(在我的 Controller 内)
monsterService.monsterList.success(function(data) { fight.monsterList = data });
有没有办法在服务(或者可能是工厂)内获得完全成功的调用,以便我可以简单地在 Controller 中调用它?
monsterService.monsterList
或
monsterService.getMonsterList()
最佳答案
有很多方法可以做到这一点,我们可以争论哪些方法更好,但对于服务我通常会这样做:
return {
monsterList: [],
fetchMonsters: function () {
return $http.get("data/monsters.json").success(function (data) {
this.monsters = data.monsters;
}.bind(this));
}
}
然后在 Controller 中你可以这样做
monsterService.fetchMonsters();
// data bind monsterService.monsterList
由于您返回$http
,如果需要,您还可以在 Controller 中链接.success
(或.error
)回调。
关于javascript - 服务或工厂,以及如何使用 $http 到达那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25795812/