6

この単純なAngularモジュールを考えると:

angular.module('fixturesModule', [])
.directive('clubfixtures', function () {
    "use strict";
    return {
        restrict: 'E',
        replace: true,
        transclude: true,
        scope: {
            club : "@club",
            max : "@max"
        },

    templateUrl: "ClubResultsTemplate.html",

    controller: function ($scope, $http) {

        $http.get("data.json").success(function (data) {
            $scope.results = data;
        });

        $scope.sortBy = "Date";

    }
}
});

コントローラ機能でクラブとマックスにアクセスするにはどうすればよいですか?

ありがとう、ジェフ

4

2 に答える 2

10

コントローラー関数が呼び出されたscope: { myAttr: '@' }に値を受け取るように、「@」で設定されたスコープの属性。

これは、単純な setTimeout で実証できます - http://jsfiddle.net/Q4seC/を参照してください(必ずコンソールを開いてください)。

ご覧のとおり、$attrs は必要なときにすぐに使用できます。

興味深いことに、'@' の代わりに '=' を使用すると、値が準備できて使用可能になるため、これは Angular のバグと見なすことができると思います...

于 2013-02-20T12:41:47.727 に答える
5

上記の 2 つの変数 (maxおよびclub) は、ディレクティブのコントローラーに注入されたスコープで単純に定義されます。これは、次のように記述できることを意味します。

controller: function ($scope, $http) {

        $scope.max; //do sth with $scope.max
        $scope.club //so sth with $scope.club

        $http.get("data.json").success(function (data) {
            $scope.results = data;
        });
}

ディレクティブのコントローラーで。

詳細を読みたい場合は、ディレクティブのスコープについて説明しているhttp://docs.angularjs.org/guide/directiveの「ディレクティブ定義オブジェクト」をお勧めします。

于 2012-11-01T17:32:41.813 に答える