#angularjs
#angularjs
Вопрос:
У меня есть объект, который я правильно перебираю:
<select ng-options="value.name for (key,value) in ctrl.userList"></select>
Я хотел добавить фильтр к объекту, например:
|filter:value.superior!=null
который будет показывать только пользователей без какого-либо текущего назначенного начальника.
Кажется, что прямо сейчас он не показывает none, но должен показывать 1. Есть ли что-то, чего мне не хватает при применении фильтра?
Полный пример, с которым я работал:
<select ng-options="value.name for (key,value) in ctrl.userList | filter: value.superior!=null"></select>
Пример, который я повторяю, это:
Var obj = {
0: {name:"test", superior:null},
1: {name:"test 2", superior:0}
};
Пример угловой скрипки: http://jsfiddle.net/p4Lj11on /
Комментарии:
1. удален тег, потому что это не angular 2.
2. Не могли бы вы привести пример, который мы можем запустить? Например, выполняемый фрагмент или jFiddle
3. Позвольте мне посмотреть, смогу ли я запустить и запустить скрипку или что-то еще, чтобы упростить ее
4. @Hack-R добавил его.
Ответ №1:
Согласно angular doc, первым аргументом для фильтрации должен быть array . Вы передаете объект. Если список пользователей является массивом, он будет работать правильно (попробуйте это). Вы можете решить эту проблему, используя пользовательский фильтр.
app.filter('myfilter', function() {
return function(obj, prop, value) {
var result = {};
for(key in obj) {
if(obj[key][prop] !== value)
result[key] = obj[key];
}
return resu<
};
});
разметка:
|myfilter: 'superior' : null
Комментарии:
1. Итак, как мне решить эту проблему? Вы можете добавить какой-нибудь код?
app.filter("myFilter", function(){});
что решило бы мою проблему вместо того, чтобы просто указывать мне на документы? Я изучал это и не могу найти образец, который решит это для меня.2. @просто подтверждаю: разметка будет выглядеть так:
|myFilter:value
3. просто
| myfilter
4. есть ли способ сделать это динамичным? Может быть, принять любой список объектов, а затем передать любое условие, такое как произвольное свойство и ожидаемое значение?
5. Я говорю это потому, что создание js-файла с различными фильтрами на основе переданного объекта довольно утомительно, и я бы предпочел, чтобы он работал в более общем случае
Ответ №2:
Просто подумал, что я бы добавил этот ответ, чтобы помочь, если вы когда-нибудь решите перейти на массив объектов, и помочь кому-либо еще, у кого есть эта проблема.
http://plnkr.co/edit/cm8xoH5oVewTxce98L47?p=preview
HTML элемент;
<select ng-model="test" ng-options="value.name for (key,value) in obj | filter:{superior: ''}"></select>
Угловой массив;
$scope.obj = [
{
name: "test",
superior: null
},
{
name: "test2",
superior: 0
}];