Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:指令对模板和控制器/链接使用单独的作用域_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS:指令对模板和控制器/链接使用单独的作用域

Javascript AngularJS:指令对模板和控制器/链接使用单独的作用域,javascript,angularjs,Javascript,Angularjs,我试图使用指令进行模板制作,但不幸的是,每个指令似乎都为模板和控制器/链接函数设置了单独的作用域 例如: 具有隔离作用域的指令 {{someValue}} 具有共享作用域的指令 {{someValue}} var-app=angular.module('app',[]); 应用指令('隔离',函数(){ 返回{ “限制”:“E”, “范围”:{ “someValue”:“@” }, “排除”:正确, “模板”:“, “链接”:函数(作用域、元素、属性){ scope.someValue=at

我试图使用指令进行模板制作,但不幸的是,每个指令似乎都为模板和控制器/链接函数设置了单独的作用域

例如:


具有隔离作用域的指令
{{someValue}}
具有共享作用域的指令
{{someValue}}
var-app=angular.module('app',[]);
应用指令('隔离',函数(){
返回{
“限制”:“E”,
“范围”:{
“someValue”:“@”
},
“排除”:正确,
“模板”:“,
“链接”:函数(作用域、元素、属性){
scope.someValue=attrs.someValue;
}
};
});
app.directive('sharing',function(){
返回{
“限制”:“E”,
“排除”:正确,
“模板”:“,
“链接”:函数(作用域、元素、属性){
scope.someValue=attrs.someValue;
}
};
});
我对巴塔朗的看法:(括号中的指令名称)


编辑:对于这个特定的模板,您应该注意,转换将创建从父级继承的隔离作用域的同级作用域。文本将使用转置范围,因此它不知道隔离范围中的值


如果您在DOM中将
{{someValue}}
切换到
{{isolated}}
,您将看到我认为正在发生的事情。

对不起,简化太多,无法发布问题,因此错过了它。模板应该包含,请在一分钟内更正我的问题。//完成;在发布问题时,divs迷路了,在plnkrWell上可以看到,我真的把它简化得太多了。:)对我的问题作了解释。有没有办法把作用域传递给被转移的部分?不幸的是,没有被转移的作用域与隔离作用域是分开的,隔离作用域只从指令属性指定的父级获取它的信息。好吧,看来我把我的示例简化得太多了。在我的应用程序中,我嵌套了多个与上述指令类似的指令,并希望在从同一指令添加新变量的同时传递父范围的一部分,因为它们在更深的嵌套级别上是必需的。因此,我真的需要将隔离控制器/链接范围传递到转置部分,并从那里访问它。
<body ng-app="App">
    <h2>Directive with Isolating Scope</h2>
    <isolating some-value="isolated">{{someValue}}</isolating>

    <h2>Directive with Shared Scope</h2>
    <sharing some-value="shared">{{someValue}}</sharing>
</body>
var app = angular.module('App', []);

app.directive('isolating', function(){
  return {
    'restrict': 'E',
    'scope': {
      'someValue': '@'
    },
    'transclude': true,
    'template': '<div ng-transclude></div>',
    'link': function(scope, element, attrs){
      scope.someValue = attrs.someValue;
    }
  };
});

app.directive('sharing', function(){
  return {
    'restrict': 'E',
    'transclude': true,
    'template': '<div ng-transclude></div>',
    'link': function(scope, element, attrs){
      scope.someValue = attrs.someValue;
    }
  };
});
< Scope (002)
    < Scope (003)    <= (isolating) contains the isolated scope
    < Scope (004)    <= (isolating) contains the template scope
    < Scope (005)    <= (sharing)   contains the shared scope