我遇到了从视图内部绑定输入的问题。我认为它会绑定到控制器范围,但它似乎绑定到子范围,所以它不会在上面更新。
如果他们在ng-repeat中(我不知道为什么),其他项目会像我期望的那样绑定。
这是一个例子:
http://jsfiddle.net/hMpsB/1/
如果输入不在ng-repeat中,那么将输入绑定到正确范围的最佳方法是什么?
答案 0 :(得分:16)
在您的示例中,您可以更好地将$scope.test
绑定到对象而不是像这样的基本类型:
$scope.test = { val: "test value" };
您可以看到this fiddle作为工作示例。
在ngView中创建的子范围将复制您的值,因为您的原始$scope.test
是原始字符串,它没有指向父值的链接,因此您的输入将修改子范围复制。绑定到对象时,子作用域具有对象引用的副本,但最终会修改对象的同一实例。
您可以查看this question,了解有关创建服务以跨多个控制器保存数据的更多信息(这与您的问题有点类似)。
你也可以考虑使用$parent
中描述的{{1}},尽管Mark提到它没有文档,如果另一个子范围被引入某个地方可能会变得混乱。