angular js:以编程方式实例化范围?

时间:2013-08-01 20:48:50

标签: angularjs angularjs-scope

简单案例:请求控制器$scope创建子范围。这个新范围将应用于$compile的链接功能 - 即程序指令实例化。

我的需求落在指令定义中的scope: true声明之外 - 我执行需要私人指令范围,但我想要创建一个每次我实例化该指令时,通过框架。相反,我想重新应用现有的范围到一个新的联系 - 一个新的指令。

我,我想教一个新的老狗技巧。

我在谈论scope obtained from the compiled directive(请参阅:从DOM中检索范围)。

考虑指令的HTML表示(让我们称之为“一半”)可以移入和移出文档的场景。我只想保存它的状态(让我们把它称为“另一半”),然后重新应用它到一个新的半编译指令实例。

范围层次结构将得到尊重,即这个新的指令实例将自己置于与以前生活相同的Angular-DOM区域中,因此我认为任何蠕虫漏洞都不会被打开也没有创造反物质。

为你的观赏乐趣而设计的超级plunk

1 个答案:

答案 0 :(得分:4)

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

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

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

它将创建隔离范围。