更好的方式启动角度控制器

时间:2015-10-16 17:47:58

标签: javascript angularjs angularjs-directive angularjs-scope angularjs-ng-repeat

我有一个编码风格的问题。给出下面的代码,它使用http服务来检索数据,然后使用控制器来执行该服务/工厂。看起来在控制器末端调用函数makePromise()似乎不是“正确”的做事方式。它有效,但有更好的方法来执行此代码吗?也许是最好的做法?我无法想象例如在控制器的末尾执行10个左右的语句...只是看起来不对。我只是在寻找更优雅的解决方案。

xmlResponseParse

2 个答案:

答案 0 :(得分:2)

您不必将其包装在函数中。很多时候我的代码看起来与此类似。

DataService.getData()
 .then(function(data) {
//console.log(data.MRData.StandingsTable.StandingsLists[0].DriverStandings)
  $scope.driversList = data.MRData.StandingsTable.StandingsLists[0].DriverStandings;
}, function(error) {
 console.log('error')
})

有两种选择,第一种是在你的html中使用ng-init =“loadStuff()”。更清洁的解决方案可能是在UI-Router中使用Resolve。因此,路由上的加载数据会发生变化,并且可能会在进行GET时显示加载程序。

答案 1 :(得分:1)

这是一个很好的问题! 我找到的最好的方法是以下功能:

(function () { // init
    // initialize values on your scope
})();

指令ng-init并不建议用它来加载控制器。

"您应该使用控制器而不是ngInit来初始化作用域上的值。" https://docs.angularjs.org/api/ng/directive/ngInit