0

ディレクティブで使用したいメインコントローラーで定義された関数getDataがあります。関数をスコープに含めようとしましたが、まだ何かが足りないか、間違っているようです。

私のテストケースへのプランカーリンク

var app = angular.module('plunker', []);

app.directive("position", function(){
   return {
       restrict:'A',
       template: "<tr><td ng-repeat='(key,value) in position'>{{getData(key,value,$index)}}</td></tr>",
       replace: false,
       scope: {
         position: '=',
         getData: '&'
       }
   };
});

app.controller('MainCtrl', function($scope) {
   $scope.name = 'World';
   $scope.positions = [{ Name: "Quarterback", Code: "QB" },
                       { Name: "Wide Receiver", Code: "WR" }
                      ]; 
   $scope.getData=function(key , value,index){
       return '|' + value + '|';
   }
});
4

2 に答える 2

2

Isolate $scope と "&" を使用すると、HTML からメソッドへの参照を渡すことになります。ディレクティブで $scope 定義を保持できます。例えば:

<table border=1>
  <tr ng-repeat="item in positions" position="item" get-data="getData(item.Name, item.Code, $index)"></tr>
</table>

ここでは、get-data をディレクティブに渡しています (違いに注意してください。HTML ではスネーク ケースになっており、$scope で getData として参照されています)。次に、テンプレートで getData のこのインスタンスを参照できます。

于 2013-08-26T00:43:46.647 に答える
0

代わりにこれを使用してください

{{$parent.$parent.getData(key,value,$index)}}

1 つ目$parentは、ディレクティブで定義されたリピーターの親スコープに到達することです。2 つ目$parentは、ディレクティブの親スコープに到達することです。

于 2013-08-25T23:52:18.923 に答える