Показать/скрыть поля на основе пользовательского объекта

то, что я пытаюсь сделать, это иметь одно место, объект (например, в этом примере vm.foo) с парами key: value для отображения и скрытия моих полей. Так что я мог бы, например, просто поместить в свой объект другую пару, например: 1502: true, которую я мог бы использовать, например, чтобы скрыть свое поле с ключом 1502

Если есть способ передать мои переменные из контроллера для использования hideExpression.

Вот просто ссылка на тот же небольшой пример, где элемент не скрыт, хотя для свойства hideExpression установлено значение true
http://jsbin.com/rorocitoqi/edit?html,js,output

Ниже приведен лишь небольшой фрагмент, кажется, что hideExpression не получает мое значение из vm.foo[bar], но когда я проверяю, console.log значение сохраняется в vm.foo. Если кто-нибудь может дать правильное руководство, так как я только начал с формальностей, спасибо :)

vm.foo = {      
  1000: true,
  1021: false,
  3204: true
};

var bar = 1000;

console.log(vm.foo[bar]);

{
  key: 'text',
  type: 'checkbox',
  templateOptions: {
    label: 'Hidden box'
  },
  hideExpression: 'vm.foo[bar]'
}

person Luka    schedule 28.10.2015    source источник


Ответы (1)


Вы неправильно понимаете, как работает hideExpressions. Это formlyExpression похоже (не совсем то же самое) на expressionProperties.

Вот рабочий пример:

{
  key: 'text',
  type: 'checkbox',
  templateOptions: {
    label: 'Hidden box'
  },
  hideExpression: function() { return vm.foo[bar] }
}
person kentcdodds    schedule 28.10.2015
comment
Обратите внимание: для того, что вы делаете, я бы рекомендовал вам изучить использование formState - person kentcdodds; 28.10.2015
comment
Спасибо за быстрый ответ и помощь, также я постараюсь включить и использовать formState - person Luka; 28.10.2015