0

コントローラー:

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>
4

2 に答える 2

2

あなたの場合、現在の製品は「製品」としてスコープでアクセスできます。

このようなことを繰り返すと:

ng-repeat="item in items" 子コントローラーのスコープには「item」があります。

あなたの例では:

<ul ng-controller='ProductsCtrl'>
  <li ng-repeat='product in products' ng-controller='ProductCtrl'>
    {{product.name}}
  </li>
</ul>
于 2012-10-17T14:52:35.503 に答える
1

@ganaraj はすでに正しい答えを提供しています。ただし、あなたの例では、おそらく <li> 要素でコントローラーを宣言する必要はないことを指摘したいと思います。各製品の ng-repeat によって作成された子スコープは、ProductCtrl コントローラーにアクセスできます。あなただけが必要なはずです

<li ng-repeat='product in products'>

コントローラ コンポーネントの理解ページの「コントローラの継承の例」セクションも参照してください。

Product 引数を取る ProdctsCtrl の $scope にメソッドを追加して、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>
于 2012-10-18T17:33:20.690 に答える