Ng模型对链式ng-options的变化没有反应

时间:2014-02-14 03:16:28

标签: javascript angularjs

当链接具有由对象数组构建的ng-options的select元素时,我看到一些奇怪的行为。小提琴here

更改范围属性“filter.general”时,范围属性“filter.option”不会重置,但下拉列表会显示。

数组的强制代码:

$scope.filterData = [
{"name" : "Users", "options" : []},
{"name" : "Data calls", "options" : [{"title": "Collection"}, {"title": "User"}]},
{"name" : "Msg Pub", "options" : [{"title": "Topic"}, {"title": "User"}]},
{"name" : "Msg Sub", "options" : [{"title": "Topic"}, {"title": "User"}]}
];

我想出了一个使用ng-change的hack来擦除“filter.option”以获得所需的行为。小提琴here

有谁知道为什么会这样?这似乎是因为“filter.option”模型没有绑定到“filter.general”模型,因此没有反映后者的任何变化。有没有办法从第一个模型构建第二个模型?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

据我了解,改变'filter.general'没有任何内容可以告诉'filter.option'更新。

希望其他人可以说出原因,我似乎记得有些关于angular.js不喜欢将值更新为null的事情,但是,有时值只是不像你希望的那样更新。对不起,我无法提供有关此事的更多信息。

然而,我有一个解决方案。 这是一个jsfiddle。 http://jsfiddle.net/ADukg/4643/

你需要做两件事。 首先,使用 在您的一般字段上ng-change告诉该字段更改时的角度。

然后在你的控制器中,有一个'reset'方法,它指向select下拉列表中的第一个选项(空选择)。 return $scope.filter.option = $scope.filter.option[0];

我知道这看起来很奇怪,但我认为这就是你要找的东西。