8

Sto cercando di capire come passare unit_number nel modale quando viene visualizzato. Sono abbastanza nuovo con Angular e sono un po 'confuso con quello che stanno facendo resolve: e group: e come posso includere il numero_unità in quell'istruzione return.Passaggio dei dati tramite la funzione modale aperta Angolare uibModal

$scope.openTenantModal = function (unit_number) { 
    var modalInstance = $uibModal.open({ 
    animation: true, 
    templateUrl: 'views/addtenantmodal.html', 
    controller: 'AddTenantModalCtrl', 
    size: 'large', 
    resolve: { 
     group: function() { 
     return $scope.group; 
     } 
    } 
    }); 
    modalInstance.result.then(function() { 
    }, function() { 
    }); 
}; 

risposta

23

Si utilizza ui-bootstrap,

componenti Bootstrap scritti in AngularJS puri

per passare una variabile a un controller modal`s è necessario utilizzare

resolve: { 
    A: function() { 
     return 'myVal' 
    } 
} 

e quindi è possibile accedere a tale variabile 'A' dal controller del modale iniettandolo

controller: ['A', function(A) { 
    // now we can add the value to the scope and use it as we please... 
    $scope.myVal = A; 
}] 

cassa: https://angular-ui.github.io/bootstrap/#/modal

Resolve:

membri che saranno risolti e passati al controllore come i locali; è equivalente alla proprietà resolver nel router.

e il gruppo è solo un membro (potrebbe essere qualsiasi cosa si sceglie)

+0

Grazie per la spiegazione dettagliata. Abbiamo apportato alcuni piccoli ritocchi perché i nostri controller sono configurati in modo leggermente diverso rispetto allo standard, ma sono riusciti a farlo funzionare. Abbiamo un sacco di modali nella nostra build, quindi sarà molto utile andare avanti. –

+0

Dimenticare di iniettare era il mio problema! – JustinJmnz

3

Basta aggiungere un alloggio in oggetto risolvere unitNumber con una funzione che restituisce unit_number valore da esso. In modo da poter ottenere il valore unit_number all'interno di AddTenantModalCtrl iniettando la dipendenza unitNumber nella funzione di fabbrica del controllore.

resolve: { 
    group: function() { 
    return $scope.group; 
    }, 
    unitNumber: function(){ 
    return unit_number 
    } 
} 

Nota: Non fare direttamente unitNumber: unit_number, perché quando si ha che, il sistema DI angolare sarà provare a cercare la dipendenza con il nome unit_number (valore) e si cercherà di valutare come funzione. Risultante si otterrà l'errore $injector nella console.