在Angular JS的控制器之间传递数据?

我有一个基本的控制器来显示我的产品,

App.controller('ProductCtrl',function($scope,$productFactory){

$productFactory.get().success(function(data){

$scope.products = data;

});

});

在我看来,我正在列表中显示此产品

<ul>

<li ng-repeat="product as products">

{{product.name}}

</li>

</ul

我要尝试做的是,当某人单击产品名称时,我有另一个名为cart的视图,其中添加了该产品。

 <ul class="cart">

<li>

//click one added here

</li>

<li>

//click two added here

</li>

</ul>

因此,我的疑问是,如何将这种点击产品从第一个控制器传递给第二个?我认为购物车也应该是控制器。

我使用指令处理click事件。我也觉得我应该使用服务来实现上述功能,只是想不通如何?因为购物车将是预定义的,所以添加的产品数可能是5/10,具体取决于用户所在的页面。所以我想保持这种通用。

更新:

我创建了一个要广播的服务,并在第二个控制器中接收了它。现在的查询是如何更新dom?由于我要删除的产品清单是硬编码的。

回答:

根据描述,似乎您应该使用服务。查看http://egghead.io/lessons/angularjs-sharing-data-between-

controllers和AngularJS服务在控制器之间传递数据,以查看一些示例。

您可以这样定义您的产品服务(作为工厂):

app.factory('productService', function() {

var productList = [];

var addProduct = function(newObj) {

productList.push(newObj);

};

var getProducts = function(){

return productList;

};

return {

addProduct: addProduct,

getProducts: getProducts

};

});

依赖关系将服务注入到两个控制器中。

在中ProductController,定义一些将所选对象添加到数组的操作:

app.controller('ProductController', function($scope, productService) {

$scope.callToAddToProductList = function(currObj){

productService.addProduct(currObj);

};

});

在您的CartController,从服务中获取产品:

app.controller('CartController', function($scope, productService) {

$scope.products = productService.getProducts();

});

以上是 在Angular JS的控制器之间传递数据? 的全部内容, 来源链接: utcz.com/qa/397371.html

回到顶部