我可以隔离div的范围吗?

时间:2014-04-04 08:06:05

标签: angularjs angularjs-scope

我的范围$scope.model = { ... };上有一个页面和一个模型 我将页面上的值与模型上的值绑定,这很好。我有一个嵌套在该模型中的地址,为了这个例子,我们可以说

  

$ scope.model = {visits:[{date:...,address:[{...},...]},   ......],...};

我需要在div中的某处写下第一次访问第一个地址的所有信息。我知道我可以输入所有字段,如model.visits[0].addresses[0].Zip等,但我需要输出model.visits[0].addresses[0]中的5个字段。我想,最简单的方法是?我考虑过把

<div ng-init="a = model.visits[0].addresses[0]">{{a.Zip}}...</div>

然后只需访问所有类似的属性。我真正想要的是,它不是在a范围内创建新属性,除非我可以将a的范围缩小到只有一个div。

这有可能吗?

澄清:我知道我可以重做我的模型或者在模型本身上移动数据,但这只是我遇到过多次的事情,我真的想知道是否有问题的解决方案像这样。

1 个答案:

答案 0 :(得分:2)

您可以创建一个小指令,在您想要的元素上创建一个新范围:

...
angular.module('yourApp').directive('newScope', function () {
    return {scope: true};
});

然后你可以像这样使用它:

<div ng-init="tmp=model.visits[0].addresses[0]" new-scope>{{tmp.Zip}}...</div>

现在,tmp属性将附加到newScope指令创建的新作用域,不会影响父作用域。

另请参阅此 short demo