控制器:
var ProductsCtrl = function ($scope) {
$scope.products = [ {name: 'one'}, {name: 'two'}, {name:'three'} ];
};
var ProductCtrl = function ($scope) {
$scope. // How do I access the current product name?
};
视图:
<ul ng-controller='ProductsCtrl'>
<li ng-repeat='product in products' ng-controller='ProductCtrl'>
</li>
</ul>
答案 0 :(得分:2)
在您的案例中,当前产品可在“产品”范围内访问。
如果你重复这样的话:
ng-repeat =“项目中的项目”您的子控制器将在范围内具有“项目”。
所以在你的例子中:
<ul ng-controller='ProductsCtrl'>
<li ng-repeat='product in products' ng-controller='ProductCtrl'>
{{product.name}}
</li>
</ul>
答案 1 :(得分:1)
@ganaraj已经提供了正确的答案。 但我想指出,在您的示例中,您可能不需要在&lt; li&gt;中声明控制器。元件。每个产品的ng-repeat创建的子范围都可以访问ProductCtrl控制器。你应该只需要
<li ng-repeat='product in products'>
另见Understanding the Controller Component页面上的“Controller Inheritance Example”部分。
你可以在ProdctsCtrl的$ scope中添加带有product参数的方法,然后可以在ng-repeat中调用它。例如,在您的控制器中:
var ProductsCtrl = function ($scope) {
...
$scope.totalPrice = function(product) {
return product.price * product.quantity;
}
}
在您的HTML中:
<li ng-repeat='product in products'>
total cost = {{totalPrice(product)}}
</li>