首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >启动Angular Controller的更好方法

启动Angular Controller的更好方法
EN

Stack Overflow用户
提问于 2015-10-17 01:47:58
回答 2查看 51关注 0票数 0

我有一个编码风格的问题。给定以下代码,该代码使用http服务检索数据,然后使用控制器执行该服务/工厂。似乎在控制器的末尾调用函数makePromise()并不是“正确”的做法。它可以工作,但是有没有更好的方法来执行这段代码呢?也许是最好的实践?我只是无法想象,例如,在controller...just的末尾执行10个左右的语句似乎是不正确的。我只是在寻找一个更优雅的解决方案。

代码语言:javascript
复制
var app = angular.module('app', []);
app.factory('DataService', function($http, $q) {
return {
getData: function() {
  return $http.get('http://ergast.com/api/f1/2013/driverStandings.json')
    .then(function(response) {
      if (typeof response.data == 'object') {
        return response.data;
      } else {
        return $q.reject(response.data);
      }
    }, function(response) {
      return $q.reject(response.data);
    })
  }
 }
});

app.controller('MainCtrl', function($scope, DataService) {
$scope.driversList = [];
var makePromise = function() {
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')
  })
}
//THIS IS MY CONCERN HERE...
makePromise();
})
EN

回答 2

Stack Overflow用户

发布于 2015-10-17 01:57:17

您不必将其包装在函数中。很多时候,我的代码看起来像这样。

代码语言:javascript
复制
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时显示一个加载器。

票数 2
EN

Stack Overflow用户

发布于 2015-10-17 02:17:32

这是一个很好的问题!我找到的最好的方法是下面的函数:

代码语言:javascript
复制
(function () { // init
    // initialize values on your scope
})();

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33176566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档