AngularJS:在视图内部时输入未绑定到预期范围

时间:2012-10-08 21:29:28

标签: javascript angularjs

我遇到了从视图内部绑定输入的问题。我认为它会绑定到控制器范围,但它似乎绑定到子范围,所以它不会在上面更新。

如果他们在ng-repeat中(我不知道为什么),其他项目会像我期望的那样绑定。

这是一个例子:
http://jsfiddle.net/hMpsB/1/

如果输入不在ng-repeat中,那么将输入绑定到正确范围的最佳方法是什么?

1 个答案:

答案 0 :(得分:16)

在您的示例中,您可以更好地将$scope.test绑定到对象而不是像这样的基本类型:

$scope.test = { val: "test value" };

您可以看到this fiddle作为工作示例。

ngView中创建的子范围将复制您的值,因为您的原始$scope.test是原始字符串,它没有指向父值的链接,因此您的输入将修改子范围复制。绑定到对象时,子作用域具有对象引用的副本,但最终会修改对象的同一实例。

您可以查看this question,了解有关创建服务以跨多个控制器保存数据的更多信息(这与您的问题有点类似)。

你也可以考虑使用$parent中描述的{{1}},尽管Mark提到它没有文档,如果另一个子范围被引入某个地方可能会变得混乱。