为什么angular.js转换子childScope不继承parentScope?

时间:2014-08-27 19:30:44

标签: angularjs angularjs-scope

非常感谢您关注这个问题,这个问题是我使用transclude指令时不会从父作用域继承的angular子作用域,这个问题与angular.js版本有关系,1.2.17之前可以发布版本,版本1.2.18之后无效

这是实际测试结果的两个版本。 http://jsfiddle.net/a3ywb2c4/

var App= angular.module("myApp",[]);
App.controller("testCtrl",function($scope){
$scope.names= [{name:"janry",value:123},{name:"janry",value:123},{name:"janry",value:123}]
$scope.dd="hello world"

});

App.directive("testDire",function($parse){
return {
    restrict:'A',
    transclude:true,
    template:"<div  ng-repeat='$item in $items' ng-transclude></div>",
    scope:false,
    link:function(scope,iele,attrs,ctrl,transclude){
         var getter=$parse(attrs.data)
         scope.$items = getter(scope);     
    }
};

})

http://jsfiddle.net/m3fo9om3/

1 个答案:

答案 0 :(得分:2)

这是AngularJS的构建方式:transcluded指令的范围是容器指令的兄弟,它们都继承父范围。

This post有很好的解释和解决方法。