0

ボタンのセットを作成するディレクティブを作成しようとしています。ボタンは、画面上のデータを強調表示するためのオン/オフの切り替えとして機能します。

ディレクティブは次のとおりです。

angular.module('directives', [])
.directive('toggleButtons', function() {
  return {
    restrict: 'E',
    scope: { data: '='},
    controller: function($scope) {
      $scope.toggle = function(data) {
        alert(data);
      };
    },
    template: "<button class='btn' " +
              //"ng-class='{active: option == model}'" +
              "ng-repeat='datum in data' " +
              "ng-click=\"toggle({{datum['id']}})\">{{datum['name']}}" +
              "</button>"
  };
});

datum['id'']作品がAngularjsによって確実に解釈されるようにするには、実行する必要があることを理解しましたが$compile()、これを実装する方法がわかりません。誰かがこれを達成するためにこのコードを変更する方法を教えてもらえますか?(同様に、これがこれを行う正しい方法ではない場合は、私に知らせてください)。ありがとう!

4

2 に答える 2

1

あなたは本当にとても近いです。datum['id']angular がテンプレートをコンパイルするため、呼び出しを中括弧で囲む必要はありません。

したがって、に変更するng-click='toggle(datum.id)'だけで、ここでわかるように機能します。

于 2013-02-14T20:17:33.343 に答える
0
I am meeting a similar issue that the variable is undefined after using $compile(template)($scope);

For example:
1: var pendingObjDiv = $("<div class="open-detail-btn" ng-click="goToFormPage(aaa)"></div>");
2: var pendingTemplate = angular.element(pendingObjDiv);
   var pendingElement = $compile(pendingTemplate)($scope);
   pendingRowList.append(pendingElement);
3: $scope.goToFormPage = function(str){}; at this step, the variable str is undefined.
于 2015-06-10T07:44:12.493 に答える