1

いくつかのデータを取得し、入力に基づいてスコープ変数を変更する Angular ディレクティブを作成しようとしていますが、動作させることができません。

これが私のJSの簡略版です:

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

module.directive('checkDirective', function() {
  return {
    restrict: 'E',
    scope: { line: '@' },
    transclude: true,
    controller: function($scope) {
        $scope.newLine = $scope.line;
    },
    template: '<div ng-transclude></div>'
  };
});

そして、ここに私のHTMLがあります:

<div ng-app="myapp">                           
    0
    <check-directive line="...">
        a{{line}}b{{newLine}}c
    </check-directive>
    1
</div>

それのためのフィドルはここにあります: http://jsfiddle.net/k66Za/60/

どんな助けでも大歓迎です!

4

2 に答える 2

1

トランスクルードされた HTML スコープは、ディレクティブ スコープではなく、親のスコープの子です。transcludeディレクティブのリンク関数に渡される関数を使用して、スコープを変更できます。

link: function (scope, elem, attrs, ctrl, transcludeFn) {
  transcludeFn(scope, function (clone, scope) {
    elem.append(clone);
  });
}

http://jsfiddle.net/k66Za/64/

ただし、これを行うことはお勧めしません。代わりに、トランスクルージョンされたコンテンツが別のスコープを使用し、それで動作すると想定する方が理にかなっています。必要に応じて、別のディレクティブを作成することもできます。

于 2015-02-17T22:02:44.947 に答える