【发布时间】:2012-09-29 04:15:28
【问题描述】:
我在从视图内部绑定输入时遇到问题。我以为它会绑定到控制器作用域,但它似乎绑定到子作用域,所以上面没有更新。
如果其他项目在 ng-repeat 中,它们会像我预期的那样绑定(我不确定为什么)。
这是一个例子:
http://jsfiddle.net/hMpsB/1/
如果输入不在 ng-repeat 内,将输入绑定到正确范围的最佳方法是什么?
【问题讨论】:
标签: javascript angularjs
我在从视图内部绑定输入时遇到问题。我以为它会绑定到控制器作用域,但它似乎绑定到子作用域,所以上面没有更新。
如果其他项目在 ng-repeat 中,它们会像我预期的那样绑定(我不确定为什么)。
这是一个例子:
http://jsfiddle.net/hMpsB/1/
如果输入不在 ng-repeat 内,将输入绑定到正确范围的最佳方法是什么?
【问题讨论】:
标签: javascript angularjs
在您的示例中,将$scope.test 绑定到对象而不是像这样的原始类型会更好:
$scope.test = { val: "test value" };
您可以查看this fiddle 的工作示例。
在ngView 中创建的子作用域将复制您的值,并且由于您的原始$scope.test 是原始字符串,它没有指向父值的链接,因此您的输入将修改子作用域副本。绑定到对象时,您的子作用域拥有对象引用的副本,但最终会修改对象的同一实例。
您可以查看this question,了解有关创建服务以跨多个控制器持久化数据的更多信息(这与您的问题有点相似)。
您也可以按照this answer 中的说明使用$parent,尽管正如Mark 提到的那样,它没有记录在案,并且如果在某个地方引入另一个子作用域可能会变得混乱。
【讨论】: