2

简单案例:要求控制器$scope创建子范围。这个新的作用域将被应用到 a$compile的链接函数——即程序指令实例化。

我的需要正好scope: true在指令定义中的声明之外——我确实需要一个私有指令范围,但我希望每次实例化指令时都由框架创建一个。相反,我想将现有范围重新应用到一个新的链接——一个新的指令。

IOW,我想教一只新狗老把戏。

我说的是从已编译指令获得的范围(请参阅:从 DOM 中检索范围)。

考虑指令的 HTML 表示形式(我们称其为“一半”)可能在文档中进出和移出的场景。我只想保存它的状态(我们称之为“另一半”)并将其重新应用到一个新的半编译指令实例。

范围层次结构将受到尊重,即这个新指令实例将与前世一样位于同一个 Angular-DOM 区域中,因此我认为不会打开任何虫洞,也不会创建反物质。

一个超级做作的笨拙,为您带来观赏乐趣。

4

1 回答 1

4

如果你想在指令中创建私有作用域,你可以使用scope.$new方法:

app.directive('colorblock', function ($rootScope) {

    link: function (scope, iElement, iAttrs, controller) {
         var privateScope = $rootScope.$new(true);
    }
   ...
});

它将创建隔离范围。

于 2013-08-01T20:56:56.857 回答