2013-05-03 26 views
10

Perché le viste genitoriali devono essere astratte per avere rendering di viste secondarie (viste nidificate)?ui-router Perché gli stati parentali devono essere astratti

$stateProvider 
      .state('A', {url: '/A', abstract: true, templateUrl: 'views/A.html'}) 
      .state('A.B', {url: '', abstract: true, templateUrl: 'views/B.html'}) 
      .state('A.B.C', {url:'', abstract:false, templateUrl:'views/C.html'}); 

La vista padre 'A' è ospitato in home.html come segue:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>Yomingo</title> 
    <link href="lib/bootstrap/css/bootstrap.css" rel="stylesheet"/> 
    <link href="lib/bootstrap/css/bootstrap-responsive.css" rel="stylesheet"/> 
</head> 
<body> 
    <div ui-view> 
    </div> 
<script type="text/javascript" data-main="scripts/main" src="lib/require/require.js"></script> 
</body> 
</html> 

Se uno qualsiasi degli stati genitore 'A' o 'B' è contrassegnato come abstract = false il ui -visualizzare il contenuto non è reso.

+1

Supponiamo che la pagina app è home.html e modello che vista padre di A è veramente a vista/a.html ... si dovrebbe condividere la vista/a.html e viste/B.html in modo che possiamo vedere come il le viste secondarie vengono inserite nelle visualizzazioni principali. – laurelnaiad

risposta

6

Ho avuto problemi simili.

I suoi tre stati sono tutti utilizzano lo stesso URL,/A:

  • A: '/ A'
  • AB: '/ A' + ''
  • ABC: '/ A' + '' + ''

Come hanno definito gli URL, lo stato corrente verrà scelto in base a il tuo URL corrente. Puoi essere solo in uno stato alla volta, quindi presumibilmente lo stato scelto è quello definito per primo.

Se si effettua la A e a.b stati astratti allora non può essere transizione in e pertanto non saranno prese in considerazione quando si passa a/A. Si sceglie A.B.C, ereditando da A.B e A.

Se si desidera visualizzare più di una delle visualizzazioni contemporaneamente, si consiglia di leggere i documenti per multiple named views per rendere più facile tenere traccia di.

Problemi correlati