AngularJS:如何在自定义过滤器中获取ng选项的当前选项?

AngularJS:如何在自定义过滤器中获取ng选项的当前选项?,angularjs,ng-options,angular-filters,Angularjs,Ng Options,Angular Filters,我需要将当前选项值传递到指定给ng选项的自定义过滤器中,但它始终显示未定义。我尝试使用$index,但index始终为零 我需要一种方法来确定当前正在过滤的ng选项迭代,这样我就可以在过滤器中验证它并返回true或false 我知道使用ng repeat可以传递$event,但$event不适用于ng选项。此外,我还尝试使用 注意:“prepared_attributes”是一个产品选项列表,在产品列表页面上成为过滤器。此页在此:(石头标签) 归根结底,我需要option.value在build

我需要将当前选项值传递到指定给ng选项的自定义过滤器中,但它始终显示未定义。我尝试使用$index,但index始终为零

我需要一种方法来确定当前正在过滤的ng选项迭代,这样我就可以在过滤器中验证它并返回true或false

我知道使用ng repeat可以传递$event,但$event不适用于ng选项。此外,我还尝试使用 注意:“prepared_attributes”是一个产品选项列表,在产品列表页面上成为过滤器。此页在此:(石头标签)

归根结底,我需要option.value在builder.filter('zeroEvaluate')中可用

<li ng-repeat="(key, attribute) in productData.prepared_attributes" ng-if="key != 'remnant_min_width' && key != 'remnant_max_width' && key != 'remnant_min_depth' && key != 'remnant_max_depth' &&key != 'stone_min_width' && key != 'stone_max_width' && key != 'stone_min_depth' && key != 'stone_max_depth' && key != 'min_width_1' && key != 'min_width_2' && key != 'min_depth_sink' && key != 'sink_width' && key != 'sink_depth' && key != 'sink_material' && key != 'sink_type'">

    <label>

        <strong>{{key|underscoreless}}</strong>

            <select name="{{key}}" ng-model="$parent.$parent[key]" ng-options="option.value as option.label for option in attribute | filter: {label: '!2 cm or 3 cm'} | zeroEvaluate:this:key:$index">

                <option value="">- {{key|underscoreless}} -</option>

            </select>

     </label>

</li>

您有一些非常非正统的代码,如果没有help@charlietfl,我编辑了我的文章来添加更多的细节。你有一些非常非正统的代码,如果没有help@charlietfl,我编辑了我的帖子以添加更多细节。
var builder = angular.module('builder', []);
...    

builder.filter('zeroEvaluate', function () {
    return function (items, scope, filterKey, index) {
        var i = 0;
        angular.forEach(scope.$parent.$parent.filteredCollection, function(val, key){
            if(scope.dimensions(scope.stoneWidth, scope.stoneDepth, val)){
                if(val[filterKey] == scope.productData.prepared_attributes[filterKey][index].value){
                    i = i + 1;
                }
            }
        });
        if(i>0){
            return true;
        }else{
            return false;
        }
    }; });