10

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

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

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

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

4

1 回答 1

16

在您的示例中,您将有更好的运气将您绑定$scope.test到对象而不是像这样的原始类型:

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

你可以看到这个小提琴作为一个工作示例。

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

您可以查看此问题以获取有关创建服务以跨多个控制器持久保存数据的更多信息(这与您的问题有点相似)。

您也可以按照此答案$parent中的描述考虑使用,尽管 Mark 提到它没有记录,并且如果在某处引入另一个子范围可能会变得混乱。

于 2012-10-08T21:39:03.763 回答