2016-04-08 11 views
9

Sono nuovo per Angular e gradirei qualsiasi consiglio. Fondamentalmente, io ho uno-a-molti al rapporto contrattuale una Category ha diversi Product, Ho la pagina di layout in cui rendo diversi punti di vista parziali:Viste parziali in AngularJS

<div class="mainContent"> 
    <ng-view></ng-view> 
</div> 

mio prima vista mostra la lista delle categorie, quando uno di loro viene cliccato, mi mostra il secondo vista , che è separata da due parti: elenco delle categorie, e la lista dei prodotti di particolare categoria, schematicamente assomiglia:

enter image description here

Il mio problema è che non riesco a capire come utilizzare un altro parziale per l'elenco dei prodotti perché voglio tenerli in un file .html separato.

ho configurato percorsi:

app.config(function($routeProvider, $locationProvider) { 
$routeProvider 
    .when('/category', { 
     templateUrl: 'category.html', 
     controller: 'categoryController as catCtrl' 
    }) 
    .when('/category/:id', { 
     templateUrl: 'categoryDetail.html', 
     controller: 'categoryDetailController as catDetailCtrl' 
    })  
    .when('/product/:category_id', { 
     templateUrl: 'product.html', 
     controller: 'productController as productCtrl' 
    }) 
    .otherwise({ 
     redirectTo: "/category" 
    }); 
}); 

e controller:

app.controller("categoryController", function($http) 
{ 
    var vm = this; 
    vm.categories = somedata; 
}); 
app.controller("categoryDetailController", function($http, $routeParams) 
{ 
    var vm = this; 
    vm.category = somedata;//current category from REST api, using $routeParams.id 
}); 
app.controller("productController", function($http, $routeParams) 
{ 
    var vm = this; 
    vm.products = somedata;//product list of current category using $routeParams.category_id 
}); 

Così il mio punto di vista prima - category.html, ho l'elenco delle categorie con HREF:

<a href="#/category/{{category.id}}"> 

Sul secondo-categoryDetail.html, elenco categorie di nuovo, ma con un altro HREF:

<a href="#/product/{{category.id}}"> 

E sulla vista ultima - product.html I Elenco dei prodotti.

Fino ad ora, quando clicco su categoria all'interno categoryDetail.html mia product.html rende in mainContent div del layout, invece - ho bisogno di rendere come interno parziale all'interno categoryDetail.html. Ho provato a utilizzare nuovamente <ng-view>, ma questo non sembra essere corretto.

+1

Qualsiasi motivo particolare per cui non stai facendo uso di stati? cioè angolare-ui-router? Inoltre - +1 per l'immagine – Katana24

+0

Hai considerato di utilizzare ngInclude invece di ngView? –

+0

@ Katana24, ho letto che l'ui-router è utilizzato per le app più grandi, il mio è piuttosto piccolo, ma dovrei usare l'ui-router se ho bisogno di cercapersone per l'elenco dei prodotti? –

risposta

5

Esistono due modi per i partial in AngularJS.

ng-includono

Se c'è alcuna logica, o sarà fornito dal campo di applicazione genitore solo è possibile includere un file html nella tua vista.

Esempio:

<div ng-include="'/path/to/your/file.html'"></div> 

nuova direttiva

Se avrete un po 'di logica nel vostro parziale e si desidera utilizzarlo come un modulo separato nella vostra applicazione - I Consiglio vivamente di costruire una nuova direttiva.

Example.

PS.Se sei nuovo di Angular, this può essere utile :-)

+0

È importante notare le doppie virgolette attorno alle virgolette singole nel caso in cui si usi 'ng-include' – Padraic

Problemi correlati