我有一个过滤的对象列表,重复使用ng-repeat,每个项目旁边都有一个输入复选框。当列表未被过滤时(就像加载页面时那样),我不希望选中复选框。如果列表被过滤,我希望选中复选框(复选框通过CSS形成树视图)。
该复选框的格式为ng-checked =“{{site.isChecked}}”。当列表被过滤时,我正在更新过滤器javascript代码中的对象上的isChecked变量,但这不是更新复选框值。如果该项目被过滤掉,那么它将从屏幕中移除,然后再次过滤回来,更新的isChecked值将进入屏幕。
HTML如下:
<ul>
<li ng-repeat="site in sites | filterSites:searchBuildings">
<input type="checkbox" ng-checked="{{site.isChecked}}" id="item-f{{site.id}}" /><label for="item-f{{site.id}}">{{site.site}}</label>
<ul>
<li ng-repeat="building in site.filteredBuildings">
<a href="#" ng-click="getBuilding(building)">{{building.address}}</a>
</li>
</ul>
</li> </ul>
JS是:
var filtered = [];
searchBuildings = searchBuildings.toLowerCase();
angular.forEach(sites, function (site) {
var added = false;
var siteMatch = false;
site.isChecked = true;
if (site.site.toLowerCase().indexOf(searchBuildings) !== -1)
siteMatch = true;
angular.forEach(site.buildings, function (building) {
if (siteMatch == true || building.search.toLowerCase().indexOf(searchBuildings) !== -1) {
if (added == false) {
added = true;
filtered.push(site);
site.filteredBuildings = [];
}
site.filteredBuildings.push(building);
}
});
});
return filtered;
很抱歉,如果代码不是很漂亮 - 我是AngularJS和JS的新手,并且还在努力弄清楚事物是如何联系在一起的。
由于
答案 0 :(得分:4)
你应该使用那里提供双向绑定的document.getElementById('myForm-submit').click()
。选中并取消选中该值将更新ng-model
site.isChecked