在javascript

时间:2015-07-14 14:23:49

标签: angularjs checkbox angularjs-ng-checked

我有一个过滤的对象列表,重复使用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的新手,并且还在努力弄清楚事物是如何联系在一起的。

由于

1 个答案:

答案 0 :(得分:4)

你应该使用那里提供双向绑定的document.getElementById('myForm-submit').click()。选中并取消选中该值将更新ng-model

的值
site.isChecked