【问题标题】:data-ng-model not updating with data-ng-ifdata-ng-model 不使用 data-ng-if 更新
【发布时间】:2015-09-01 15:38:58
【问题描述】:

我有一个这样的html

<select data-ng-model="selection">
    <option value="">Select Search</option>
    <option value=1>One</option>
    <option value=2>Two</option>
    <option value=3>Three</option>
</select>
<input type="text" placeholder="search One" data-ng-model="search.one" data-ng-if="selection==1"/>
<input type="text" placeholder="search Two" data-ng-model="search.two" data-ng-if="selection==2"/>
<input type="text" placeholder="search Three" data-ng-model="search.three" data-ng-if="selection==3"/>
Selected: {{selection}}
Search by: {{search}}

在上面的代码中,如果选择了一个选项,则与该选项关联的文本框是可见的。但是,如果在文本框中输入了一些输入,变量search(上面代码中的“搜索依据”字段)不会得到更新。但如果我删除data-ng-if,那么search 变量会正确更新。

我应该怎么做才能用data-ng-if 更新search 变量?

谢谢!

【问题讨论】:

  • @gauravbhavsar:它对我有用。现在我不确定该怎么做。我应该删除这个问题吗?或者您可以将其发布为答案,我会接受...
  • 您不能删除已给出答案的问题,如果您这样做,您的帐户将被阻止提问。

标签: javascript angularjs html


【解决方案1】:

这里是解决方案Angularjs ng-model doesn't work inside ng-if

您必须使用$parent 来引用父作用域。

data-ng-model="$parent.search.one"
data-ng-model="$parent.search.two"
data-ng-model="$parent.search.three"

【讨论】:

    【解决方案2】:

    试试data-ng-model="$parent.search.one"

    【讨论】:

      【解决方案3】:

      发生这种情况是因为 ng-if、ng-repeat、ng-switch、ng-view 和 ng-include 等指令都创建了新的子作用域。

      为了防止它在子范围内创建其属性,您应该使用:

      data-ng-model="$parent.search.one"
      

      有关此主题的更好解释,请访问:https://github.com/angular/angular.js/wiki/Understanding-Scopes

      它会清除你所有的疑虑。

      【讨论】:

        【解决方案4】:

        也许您的控制器中有一些奇怪的东西,但是在这个 JSFiddle 中,选择一个新选项并更改文本字段中的值会更新 {{search}} 中的值就好了。 https://jsfiddle.net/xx3bsafk/

        基于这个其他线程,我的工作是因为ng-if 字段中的ng-models 与对象的子对象相关联,而不是对象本身(如果您试图编辑对象本身,javascript 会自动创建了一个新的对象实例,而不是引用对象本身——因为 if 创建了一个新的范围,就像每个人都说的那样。)

        Angularjs ng-model doesn't work inside ng-if

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-06-02
          • 1970-01-01
          • 1970-01-01
          • 2014-12-01
          相关资源
          最近更新 更多