0

我是angularjs的新手。我对指令中的孤立范围有点困惑。我有以下代码,

HTML

<!doctype html>
<html ng-app="myApp">
<body ng-controller="componentsController">
    <div class="scope-one" data-param="a">
        <div class="scope-two" data-param="c"></div>
    </div>
    <!---->
</body>
</html>

脚本

angular.module('components', [])
    .controller('componentsController', function($scope){
        $scope.a = {
                "b": 1
            };
        $scope.c = { 
                "d": 2
            };
    });

    angular.module('myApp', ['components'])
        .directive('scopeOne', function() {
            return {
                restrict: 'C',
               scope: {
                    a: "=param"
                },
                link: function(scope, element, attrs) {
                    console.log('one', scope);
                }
            };
        })
        .directive('scopeTwo', function() {
            return {
                restrict: 'C',
                scope: {
                    c: "=param"
                },
                link: function(scope, element, attrs) {
                    console.log('two', scope);
                }
            };
        })

演示 http://jsfiddle.net/jPtb3/23/

问题 我有两个指令scope-onescope-two并且我正在使用scope-twoinside scope-one。对于scope-one,孤立的范围是好的和适当的,而对于scope-two值是undefined。我没有得到问题,我做错了吗?当一个指令不在另一个指令中时,两个隔离范围值都很好。

4

1 回答 1

3

场景 1:当scope-two不在scope-one两个指令中时,两个指令都直接在控制器的范围内,并且一切都按预期工作。

场景 2:当scope-twois insidescope-one前一个指令在后者的范围内移动,而不是直接在控制器的范围内。

在这种情况下,您需要使用$parent来访问c控制器范围的模型。

这对我有用:

<div class="scope-one" data-param="a">
    <div class="scope-two" data-param="$parent.c"></div>
</div>
于 2013-11-09T07:53:20.953 回答