我编写了一个自定义过滤器,用于从多个webView.addEventListener(LocationChangeEvent.LOCATION_CHANGING, locationChanging);
function locationChanging(e:LocationChangeEvent):void {
e.preventDefault();
var query:String = e.location.split("?")[1];
var vars:URLVariables = new URLVariables(query);
trace(vars.lat, var.lng);
}
输入的可用选项列表中排除当前选定的选项。
codepen - http://codepen.io/jusopi/pen/XdjNWa?editors=1010
模板实施
<select>
过滤
<select class="form-control" ng-model="vc.cols[0].attr"
ng-options="opt.attr as opt.name for opt in vc.opts | excludedAttrs:vc.cols">
我不确定这是否是我对Lodash .filter('excludedAttrs', function () {
return function (opts, cols) {
return _.differenceWith(opts, cols, function (opt, col) {
return opt.attr === col.attr;
});
};
})
(API docs)的误解,或者是否有一些巧妙地使用过滤器{{1}其他输入。
据我了解differenceWith
,它意味着比较2个数组并使用比较器函数,如果要排除它们则返回true。过滤器实际上有效,但为什么它不能正确呈现<select>
默认值或选择值?
答案 0 :(得分:0)
选择未显示当前所选ng-model
的问题是因为<option/>
中由于过滤器将其排除在集合中而未出现ng-options
。
为了解决这个问题,我需要排除当前选择的值(即ng-model
从...被排除。基本上我不得不将其添加回来进入已过滤的ng-options
。
codepen - http://codepen.io/jusopi/pen/XdjNWa?editors=1010
模板实施
<select ng-model="vc.cols[0].attr"
ng-options="opt.attr as opt.name for opt in vc.opts | excludedAttrs:vc.cols:0">
修复过滤器
.filter('excludedAttrs', function () {
return function (opts, cols, i) {
// fix
cols = _.without(cols, cols[i]);
// end fix
return _.differenceWith(opts, cols, function (opt, col) {
return opt.attr === col.attr;
});
};
})