【问题标题】:Angular Select not changing model property角度选择不改变模型属性
【发布时间】:2014-02-01 03:21:33
【问题描述】:

我有一个绑定到某个属性的选择。

<select ng-model="IsComplete" ng-change="ChangeMe()" ng-options="item.DataListText as item.DataListText for item in YesNoValues">
    <option value="">-- Select Value --</option>
</select>

这一切都发生在我显示的模式上 - 此选择适用于我的应用程序中的其他视图..只是由于某种原因不在此模式上。

在我的模块中,这是我设置值的地方 - 所以我的选择被正确绑定 - 它显示“是” - 但是当我将其更改为“否”时,它保持为“是”

$scope.IsCompleted = "Yes";

这是我的 changeme 函数 - 我只是把它放进去,这样我就可以看到值了。

$scope.ChangeMe = function () {
    alert($scope.IsComplete);
}

我已经从我们应用程序的另一个有效部分复制了这段代码 - 这个没有。我们模式上的所有其他绑定都在工作。所以我有一些日期输入,当我更改它们时,它确实会更改范围并正确保存。这只是一个下拉菜单。

提前致谢。

--编辑

我越来越接近解决这个问题 - 如果有人知道的话 - 在 ng-model 更新/更改之前调用 ng-change。

我添加了一个&lt;input ng-model="IsComplete" /&gt;,当我更改下拉列表时,我的警报仍然显示“是”,但我的输入确实说“否” - 所以我认为我的范围正在改变,我只是被我的警报所说的内容所困扰.

【问题讨论】:

  • 这里最好添加一个jsFiddle。这样我们会更容易找到问题。

标签: javascript angularjs


【解决方案1】:

可能尝试$watch 或使用$scope.apply

【讨论】:

  • 我没有使用过 $watch 或 apply - 你能看看我上面的回复/解决方案,让我知道什么是更好的解决方案。谢谢
【解决方案2】:

发现问题 - 很难弄清楚。发生的事情是,当我加载页面(它是一个模式)时,我有了这个新的范围。那是绑定它并将其设置为“否”-当我更改它时,该范围之外的嵌套范围添加了相同的属性,这就是我的更改所在。我的标记引用了父范围,并且从未改变 - 嵌套范围是。所以在我的标记中,我添加了加载时的对象(“人”)。所以代替 ng-model="IsCompleted" 我输入了 ng-model="Person.IsCompleted" ,这解决了我的问题。 -

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多