Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 收集过滤的ng重复数据以在控制器中使用_Javascript_Angularjs - Fatal编程技术网

Javascript 收集过滤的ng重复数据以在控制器中使用

Javascript 收集过滤的ng重复数据以在控制器中使用,javascript,angularjs,Javascript,Angularjs,我正在尝试在一个响应网格中构建一个图片库,数据来自Mongo DB。数据库中的数据采用这种形式。名称、图像、关键字、简历、参考”,可搜索 我从一个ng重复开始,根据图片关键字显示类别选择复选框。这似乎很好 p CATEGORIES: span.formgroup(data-ng-repeat='category in mongoController.catData') input.checks( type='checkbox', ng-model=

我正在尝试在一个响应网格中构建一个图片库,数据来自Mongo DB。数据库中的数据采用这种形式。名称、图像、关键字、简历、参考”,可搜索

我从一个ng重复开始,根据图片关键字显示类别选择复选框。这似乎很好

    p CATEGORIES:
        span.formgroup(data-ng-repeat='category in mongoController.catData')
            input.checks( type='checkbox', ng-model='mongoController.filter[category]')
            | {{category}}
以下是对关键字复选框进行排序和标识的工厂:

                getCategories: function (cat) {
                    return (cat || []).map(function (pic) {
                        return pic.keyword;
                    }).filter(function (pic, idx, array) {
                        return array.indexOf(pic) === idx;
                    });
                }
从那里,我过滤一个ng重复,根据复选框选择和/或一个搜索字段显示图片,这也很好

    input.form-control.input-med(placeholder="Search" type='text', ng-model="search.searchable")
    br
    div.light.imageItem(data-ng-repeat="picture in filtered=( mongoController.allData | filter:search | filter:mongoController.filterByCategory)")
        a(data-toggle="modal", data-target="#myModal", data-backdrop="static", ng-click='mongoController.selectPicture(picture)')
            img( ng-src='../images/{{picture.image}}_tn.jpg', alt='Photo of {{picture.image}}')
    p Number of results: {{filtered.length}}
显示图片列表的功能:

    //Returns pictures of checkboxes || calls the noFilter function to show all
    mongoController.filterByCategory = function (picture) {
        return mongoController.filter[picture.keyword] || noFilter(mongoController.filter);
    };

    function noFilter(filterObj) {
        for (var key in filterObj) {
            if (filterObj[key]) {
                return false;
            }
        }
        return true;
    }
如果单击其中一张图片,将弹出一个模式框,其中包含所有输入字段,您可以在其中编辑特定于图像的字段

我正在努力解决的部分是如何从过滤的ng repeat中收集可用数据,以便在控制器中使用,这样当模式框打开时,我可以在满足搜索条件的其他图片中向右或向左滚动


任何建议都会有帮助,即使你为什么要这样做?

当你声明过滤图片的ng repeat时,你的
filtered
变量属于当前的$scope(目前我无法从问题中推断)。您可以使用controller作为语法将
筛选的
变量与特定控制器关联:(即使用

例如:()

var mod=angular.module('myapp',[]);
模块控制器('ctrl',函数(){
var vm=这个;
vm.data=['alice','bob','carol','david','ema'];
vm.onbutton=函数(){
//在此访问符合搜索条件的筛选数据。
console.log(vm.filtered);
}
});

{{item}}

项目:{{vm.filtered.length}

在控制台中显示我
它看起来很简单,也很好用。谢谢你打破僵局。