如何重用ajax factory方法来设置$ scoped变量?

时间:2015-03-19 15:58:11

标签: javascript angularjs angularjs-scope

我的控制器中弹出了一段重复的代码:

// Get first product from list
Product.get_details( id )
  .success(function ( data ) {

    // Setup product details
    $scope.active_product = data;

  });

我想将它放入工厂,以便我可以干我的代码。

当我需要访问$scope.active_product并通过摘要循环观看时会出现问题。

内部产品工厂:

  //  ajax function returns product data
  var get_details = function( id ){ ... }

  var set_active_product = function( active_product, id ){

    // Get first product from list
    get_details( id )
      .success(function ( data ) {

        // Setup product details
        active_product = data;

      });

  };

在我的控制器内

Product.set_active_product( $scope.active_product, id );

这可行,但$scope循环不会监视$digest

有没有办法在不传入$scop ed变量的情况下执行此操作?

1 个答案:

答案 0 :(得分:0)

感谢@PetrAveryanov指出$resource

使用$ resource获取数据,并最初使用空对象填充$scope.active_product。这意味着active_product仅显示$resource填充的时间。

内部产品工厂

return $resource('/path/to/resource');

内部控制器

$scope.active_product = Product.get({ id: id });