angularjs选择过滤器会将第一行留空,但不会在过滤器预先应用时停止

时间:2014-06-25 16:49:48

标签: javascript angularjs select ng-options angular-filters

我有点迷失为什么我的ng-options再次使用过滤器返回空行。

请查看此plunker

我们的想法是在下拉列表中显示一个基于树状结构对象的组织结构图。

要做到这一点,我已经构建了一个服务,将树变平为一维对象。我在我的ng-option中调用的过滤器中使用此服务。

<select ng-model="treeValue1" ng-init="treeValue1 = fields[0]" class='form-control' 
   ng-options="element as element.display for element in fields | flattenTree">
  </select> 

这会显示一个空行,当我选择一个值时,它不会选择它并返回空行。这更令人困惑。

但是当我在控制器中预先使用flatten功能时,它可以很好地工作。

<select ng-model="treeValue2" ng-init="treeValue2 = flatFields[0]" class='form-control' 
   ng-options="element as element.display for element in flatFields">
  </select> 

我不知道为什么第一个不起作用。

非常感谢您的帮助,如果您能为此行为提供解释,那就太棒了。

谢谢!

1 个答案:

答案 0 :(得分:0)

过滤器会创建一个新数组,所以基本上你的模型和你的选项是2个不同的对象,因此select不会将模型值识别为其选择的一部分,这就是为什么你在第一个中没有选择任何东西的原因。在第二个上,您从已经过滤的数据集中选择模型,因此模型确实属于选项数组