Использование вычисляемого свойства ember (фильтра) для фильтрации модели и использование таблицы 2 ember-models для отображения в формате таблицы. Это не дает никакой записи, чтобы показать

Попытка отобразить данные пользователя с помощью аддона ember-models-table. Также хотел отфильтровать данные, используя поле isActive.Am, используя для этого вычисляемое свойство ember (фильтр). Первый раз, когда страница загружается, я получаю правильный результат. Но когда я пытаюсь фильтровать, я вижу, что значение для currentfilter передается правильно, но я не получаю никаких результатов. Таблица говорит, что нет записей, чтобы показать.

Мой код.hbs:

    <div class="form-group">
        <label for="show">Show:</label>
        <select class="form-control" id="show" onchange={{action "filterUpdated" value="target.value"}}>
            <option value="null">All</option>
            <option value="true">Active</option>
            <option value="false">Inactive</option>
        </select>
    </div>

    {{models-table
data=filteredPeople 
columns=columns 
showColumnsDropdown=false 
useNumericPagination=true 
filteringIgnoreCase=true 
showPageSize=true
    }}

Код моего контроллера:

 users: alias('model'),
currentFilter: null,

filteredPeople: filter('users', function(user) {

  if(this.get('currentFilter') === null) {
    return true;
  } else {
    return user.isActive === this.get('currentFilter');
  }
}).property('users', 'currentFilter'),

actions: {

  filterUpdated: function (value) {

    alert(value);
    if (value=== null) {
      this.set('currentFilter', null);
    }
    else {
      this.set('currentFilter', value);
    }
  }

Пожалуйста помоги.

1 ответ

Решение

После проверки, я только что заметил, что это глупая ошибка, метод filterUpdated возвращает строку, а для поля isActive требуется логическое значение. Я просто включил следующую строку, чтобы изменить ее на логическое.

var isActiveS = (this.get ('currentFilter') == 'true');

Это сработало.

Другие вопросы по тегам