如何重用ajax工厂方法来设置$scoped变量

How do I reuse ajax factory method to setup a $scoped variable?

本文关键字:设置 scoped 变量 方法 何重用 ajax 工厂      更新时间:2023-09-26

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

// 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 );

这是有效的,但是$digest循环没有监视$scope

有没有一种方法可以在不传递$scop ed变量的情况下实现这一点?

感谢@PetrAveryanov指出$resource。

使用$resource获取数据,并在$scope.active_product中初始填充一个空对象。这意味着active_product仅在由$resource填充时显示。

产品工厂内部

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

控制器内部

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