AngularJS ng-repeat过滤器功能未正确过滤

时间:2014-08-11 12:30:47

标签: javascript angularjs angularjs-ng-repeat ui-select2

我有ui-select2下拉列表取决于父母的选择。我为第一个ui-select2提供了一系列选项,然后当从该下拉列表中选择某些内容时,将显示下一个下拉列表。第二个下拉列表的可用选项取决于第一个下拉列表中选择的内容。 ng-repeat指令迭代一系列选择。这是html和js代码。

HTML:

<select name="application" placeholder="Select a Tenant" ng-disabled="!sharedObj.tenantApplications || sharedObj.tenantApplications.length == null" class="form-control" id="application" ng-change="vmOrderItem.vmNameUSI=null" ui-select2 ng-model="vmOrderItem.tenantApplication" title="Select tenant application" data-style="btn-default" required><option></option> <option ng-repeat="tenantApplication in sharedObj.tenantApplications | filter:tenantFilter()" value="{{tenantApplication.id}}">{{tenantApplication.name}} </option> </select>

JS:

/** Filters the tenant depending on what domain is selected */
$scope.tenantFilter = function(tenantApplication) {
  $scope.sharedObj.tenantApplications;
  tenantApplication.name;
  tenantApplication.id;
  return true;
  /*    return $scope.vmOrderItem.domain.id == tenantApplication.domainId;*/
}

我得到的问题是即使我返回true,也没有任何东西出现在下拉列表中。我这样做是为了测试逻辑。我不知道为什么tenantApplication参数在函数中总是未定义的。我使用谷歌浏览器检查元素插入一个断点,它抱怨参数是未定义的。但是,当我回归真实时,我不明白为什么它不能正常工作。我是JavaScript和AngularJS的新手,所以非常感谢任何帮助。我已经完成了所有AngularJS示例并阅读了他们的文档,但我还只是一个初学者。

1 个答案:

答案 0 :(得分:2)

认为这应该是:

<option ng-repeat="tenantApplication in sharedObj.tenantApplications |
 filter:tenantFilter" value="{{tenantApplication.id}}">
相关问题