AngularJS和Javascript - 减少boilerplace代码

AngularJS and Javascript - reduce boilerplace code

本文关键字:boilerplace 代码 减少 Javascript AngularJS      更新时间:2023-09-26

我意识到这可能只是一个常规的javascript/异步编程查询,但AngularJS是我最希望看到常见任务的样板减少的地方。

我通常在 AngularJS 控制器中具有这些类型的模式,其中数据的实际加载和存储委托给服务。

$scope.user = null; 
$scope.init = function(){
    // load user
    profileService.loadUser(function(user){
        $scope.apply(function(){
            $scope.user = user;
        });
    });
};

这是一个相当冗长的"getter"。是否有更好的模式将数据从服务引入范围?

在您的服务中,如果您正在执行$http.get(或任何其他谓词),它将返回一个 Future Object。未来对象是当前是承诺的对象,但最终将是一个对象。

app.factory('profileService', function(){    
  return {
    loadUser: function(){
      return $http.get('http://www.example.com'); 
    }
  };        
});

这将返回一个未来对象。因此,在代码中,您可以执行以下操作:

$scope.init = function(){
    $scope.user = profileService.loadUser();
    //no $scope.$apply necessary, as you are still inside a digest cycle. 
};

在短期内,$scope.user将成为未来的对象。但它最终会分解成一个对象。

要了解更多信息,请查看以下链接并查找未来对象