0

私はこの特定のテストについて何時間も頭を悩ませてきました。実証されたディレクティブは機能していると思いますが、isolate スコープに渡される値が未定義になっています。

コード:

html

<!doctype html>
<html ng-app="myApp">
<body>
    <a ng-href="#" class="test-scope" name="test">Console should say 'test' but gives undefined</a>
</body>
</html>

JavaScript

angular.module('myApp', [])
    .directive('testScope', function() {
        return {
            restrict: 'C',
            scope: {
                name: "="
            },
            link: function(scope, element, attrs) {
                console.log(scope.name);
            }
        };
    });

これがフィドルです:http://jsfiddle.net/jPtb3/8/

私は何か間違ったことをしているに違いありません。

4

2 に答える 2

1

分離されたスコープ構成を正しく解釈していません。

name=ディレクティブ宣言htmlに同じ名前の属性があり、属性値が存在すると言っている場合は、nameスコープ内のそのプロパティ名にバインドします。

この場合test、ディレクティブが宣言されているスコープにスコープ プロパティ名が必要です。ディレクティブ スコープのnameプロパティは、親のこのテスト プロパティを指します (文字どおりではありません)。

要するに、ディレクティブ スコープname-> コンテナー スコープtestプロパティです。

ここで私のプランカーを参照してくださいhttp://jsfiddle.net/cmyworld/ANzUf/

于 2013-10-03T04:34:14.967 に答える
1

=に変更@

angular.module('components', [])
.directive('testScope', function() {
    return {
        restrict: 'C',
       scope: {
            name: "@"
        },
        link: function(scope, element, attrs) {
            console.log(scope.name);
        }
    };
})

angular.module('myApp', ['components']);

固定を参照Fiddle

@– 親スコープ プロパティの値 (常に文字列) をローカル スコープにバインドします。

=– 渡される前に評価される親スコープ プロパティを直接バインドします。

于 2013-10-03T04:36:24.393 に答える