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

val*_*lan 10 javascript angularjs

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

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

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

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

Glo*_*opy 16

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

$scope.test = { val: "test value" };
Run Code Online (Sandbox Code Playgroud)

你可以看到这个小提琴为一个工作的例子.

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

您可以查看此问题,以获取有关创建服务以跨多个控制器保留数据的更多信息(这与您的问题有点类似).

你也可以$parent按照这个答案的描述来研究使用,尽管Mark提到它没有文档,如果另一个子范围被引入某个地方可能会变得混乱.