我有一个基本的控制器,显示我的产品,
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>
所以我的怀疑是,如何通过这个点击的产品从第一个控制器到第二?我认为手推车也应该是一个控制器。
我处理点击事件使用指令。还有我觉得我应该使用服务实现上述功能只是不能怎么样?因为购物车将预定义数量的产品添加可能是5/10取决于哪个页面用户是。所以我想保持这个通用。
更新:
我创建了一个服务广播和在第二个控制器我收到它。现在查询是如何更新dom?因为我的下拉产品列表是相当硬编码。
从描述,似乎你应该使用一个服务。查看
http://egghead.io/lessons/angularjs-sharing-data-between-controllers和
AngularJS Service Passing Data Between Controllers看一些例子。
原文链接:https://www.f2er.com/angularjs/147660.html您可以定义您的产品服务:
app.service('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',productService) { $scope.callToAddToProductList = function(currObj){ productService.addProduct(currObj); }; });
在您的CartController中,从服务获取产品:
app.controller('CartController',productService) { $scope.products = productService.getProducts(); });