2016-11-08 10 views
0

У меня есть массив кнопок в моей модели, и «нг-если» в шаблоне для каждой кнопки:нг-если не работает, как ожидалось

self.aButtons.push({ 
       label: __('Siguiente'), 
       class: 'btn-moduloAvance', 
       show: (self.oContrato.definirPago || self.oContrato.horario_definido) 
       } 
      }); 

Это HTML-код:

<button ng-if="boton.show" 
      ng-repeat="boton in personaAndContrato.aButtons" 
      type="button" 
      ng-class="boton.class" 
    /> 

Я знаю, что я назначаю логическое свойство 'show', поэтому это невозможно, потому что это простой тип.

Кстати, я пытаюсь присвоить функцию свойству 'шоу', но я получаю следующее сообщение об ошибке:

self.aButtons.push({ 
       label: __('Siguiente'), 
       class: 'btn-moduloAvance', 
       show: function() { 
        return (self.oContrato.definirPago || self.oContrato.horario_definido); 
       } 
      }); 

Html (под редакцией):

<button ng-if="boton.show()" 
     ng-repeat="boton in personaAndContrato.aButtons" 
     type="button" 
     ng-class="boton.class" 
/> 

TypeError: v2.show is not a function at fn (eval at compile (angular.js?version=alpha.1:14539), :4:240)

Некоторые идеи? Я что-то пропускаю или пропускаю что-то?

Заранее благодарен!

+0

нг-шоу является менее навязчивым, чем нг-, если, и конечный результат аналогичен, но принято использовать с нг-повтора –

ответ

2

Вы не можете иметь ng-repeat и ng-if в том же теге, если ng-if относятся к внутренней переменной ng-repeat.

Просто разделить его:

<div ng-repeat="boton in personaAndContrato.aButtons"> 
    <button ng-if="boton.show()" 
     type="button" 
     ng-class="boton.class" 
    /> 
</div> 
Смежные вопросы