2015-10-28 2 views
0

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

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

Вот только ссылка на тот же небольшой пример, в котором элемент не скрыт, хотя hideExpression свойства установлено в истинной
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]' 
} 

ответ

0

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

Вот the working example:

{ 
    key: 'text', 
    type: 'checkbox', 
    templateOptions: { 
    label: 'Hidden box' 
    }, 
    hideExpression: function() { return vm.foo[bar] } 
} 
+0

Обратите внимание, за то, что вы делаете, я бы порекомендовал вам взглянуть на использование 'formState' – kentcdodds

+0

Спасибо за быстрый ответ и помощь, а также я буду пытаться включить и использовать' formState' – Luka