【问题标题】:AngularJS: input not binding to expected scope when inside a viewAngularJS:在视图中输入未绑定到预期范围
【发布时间】:2012-09-29 04:15:28
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

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

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

    您可以查看this fiddle 的工作示例。

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

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

    您也可以按照this answer 中的说明使用$parent,尽管正如Mark 提到的那样,它没有记录在案,并且如果在某个地方引入另一个子作用域可能会变得混乱。

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-08
      • 2014-08-16
      相关资源
      最近更新 更多