Sto provando a creare una direttiva personalizzata che consenta di visualizzare le domande nel sondaggio. Poiché ho diversi tipi di domande, ho pensato di creare una direttiva singola e di cambiarne il modello in base al tipo di domanda.Modello contidionale - Impossibile trovare il controller 'mdRadioGroup' richiesto dalla direttiva 'mdRadioButton'
mia direttiva:
directive('question', function($compile) {
var combo = '<div>COMBO - {{content.text}}</div>';
var radio = [
'<div>RADIO - {{content.text}}<br/>',
'<md-radio-group layout="row" ng-model="content.answer">',
'<md-radio-button ng-repeat="a in content.answers track by $index" ng-value="a.text" class="md-primary">{{a.text}}</md-radio-button>',
'</md-radio-group>',
'</div>'
].join('');
var input = [
'<div>INPUT - {{content.text}}<br/>',
'<md-input-container>',
'<input type="text" ng-model="content.answer" aria-label="{{content.text}}" required md-maxlength="10">',
'</md-input-container>',
'</div>'
].join('');
var getTemplate = function(contentType) {
var template = '';
switch (contentType) {
case 'combo':
template = combo;
break;
case 'radio':
template = radio;
break;
case 'input':
template = input;
break;
}
return template;
}
var linker = function(scope, element, attrs) {
scope.$watch('content', function() {
element.html(getTemplate(scope.content.type))
$compile(element.contents())(scope);
});
}
return {
//require: ['^^?mdRadioGroup','^^?mdRadioButton'],
restrict: "E",
link: linker,
scope: {
content: '='
}
};
})
Dentro il mio controller principale ho lista di domande e dopo il pulsante cliccando Sto installando domanda attuale che è assegnare alla mia direttiva.
Tutto funziona bene per le prime domande, ma dopo essere stata impostata domanda attuale tipo di radio ottengo questo errore:
Error: [$compile:ctreq] Controller 'mdRadioGroup', required by directive 'mdRadioButton', can't be found!
Ho provato ad aggiungere al mio required
direttiva come sotto, ma non ha aiutato .
require: ['^mdRadioGroup'],
Non riesco a capire che cosa sta succedendo, perché sono ancora nuovo di spigoloso.
ho creato Plunker per mostrare il mio problema: http://plnkr.co/edit/t0HJY51Mxg3wvvWrBQgv?p=preview
passaggi per riprodurre questo errore:
- Aprire Plunker
- Clicca
Next
pulsante due volte (per navigare alla domanda 3) - Vedere errore nella console
EDIT:
Ho modificato il mio Plunker in modo che il mio modello di domande sia visibile. Sono in grado di selezionare le risposte, anche nelle domande che sollevano il modello di domande di errore che si sta aggiornando. Ma ho ancora errore quando si passa alla domanda 3.
Grazie per questa proposta, ma potresti anche aiutarmi a rimuovere l'errore che sto ottenendo in questo momento? – Misiu
Questa è una buona domanda. Il primo che ho notato è che non si ha un modello ng sul 'md-radio-group' – Iamisti
Ho aggiunto' ng-model' ma non è stato d'aiuto. – Misiu