0

完全な例については、このフィドルを参照してください:http: //jsfiddle.net/lesouthern/WnvjF/7/

.directive('redirectEnterKey',function() {
    return {
        restrict : 'A',
        controller : function() {}
    }
})
.directive('redirectEnterKeyTo', function() {
    return {
        restrict : 'A',
        require : '^redirectEnterKey',
        link : function($scope,$element) {
            $scope.enterKeyElement = $element;
        }
    }
})
.directive('redirectEnterKeyFrom', function() {
    return {
        restrict : 'A',
        require : '^redirectEnterKey',
        link : function($scope,$element) {
            $element.keypress(function($event) {
                if($event.keyCode == '13') {
                    $scope.enterKeyElement.click();
                    $event.stopPropagation();
                    $event.preventDefault();
                }
            });
        }
    }
});

変数「enterKeyElement」のスコープをディレクティブredirectEnterKey、redirectEnterKeyTo、redirectEnterKeyFromに分離したいと思います。

ただし、変数「myInput」のスコープを「pageCtrl」と共有したい。

これはできますか?そして、これらのディレクティブで「myInput」を参照する必要はありませんか?これはベストプラクティスですか?

ありがとう!

4

2 に答える 2

0

私を助けてくれてありがとう、そしてあなたは私にいくつかの良い手がかりを与えてくれました。これは、角度スコープの良い教育でした。

そして、私の不完全な質問を許してください。ここに問題の別の例があります:http://jsfiddle.net/lesouthern/jJ2Rj/

スコープが共有されているため、誤った入力が非表示になっていることに注意してください。

これは私自身の質問への答えです:http://jsfiddle.net/lesouthern/FZXUP/、これが助けになる人のために。

基本的に、各ディレクティブには独自のスコープがあり、親ディレクティブ'redirectScopeExample'を介して親コントローラーにバインドできます。

var pageModule = angular.module('pageModule',[])
.controller('pageCtrl',['$scope',function($scope) {
}])
.directive('redirectScopeExample',function() {
    return {
        restrict : 'A',
        scope : {
            hideElement : '&',
            redirectScopeExampleInput : '=ngModel'
        },
        controller : function($scope) {
        }
    }
})
.directive('redirectScopeExampleTo', function() {
    return {
        restrict : 'A',
        require : '^redirectScopeExample',
        link : function($scope,$element,$attr) {
            $element.click(function() {
                $scope.hideElement.toggle();
            });
        }
    }
})
.directive('redirectScopeExampleFrom', function() {
    return {
        restrict : 'A',
        require : '^redirectScopeExample',
        link : function($scope,$element,$attrs) {
            $scope.hideElement = $element;
        }
    }
});
于 2013-02-04T20:34:46.333 に答える
0

あなたの質問は私には完全に明確ではありませんが、親スコープから分離スコープを作成し、必要に応じて親スコープからいくつかのプロパティを含めることができると思います

.directive('redirectEnterKeyFrom', function() {
    return {
        scope:{myInput'=ngModel'} 
        restrict : 'A',
        require : '^redirectEnterKey',
        link : function($scope,$element) {
            $element.keypress(function($event) {
                if($event.keyCode == '13') {
                    $scope.enterKeyElement.click();
                    $event.stopPropagation();
                    $event.preventDefault();
                }
            });
        }
    }

});

于 2013-01-30T18:59:42.803 に答える