2015-12-02 15 views
6

Staram się własnego szablonu ListView, na przykład:Ng-admin: w jaki sposób mogę utworzyć niestandardową listę szablonów?

import listTemplate from '../templates/listTemplate.html'; 

var users = admin.getEntity('users'); 
    users 
    .listView() 
    .template(listTemplate) 
    .actions([]) 
    .title('All users') 
    .perPage(10) 
    .fields([ 
     nga.field('email'), 
     nga.field('name') 
    ]) 
    .filters([ 
     nga.field('filter', 'template') 
     .label('') 
     .pinned(true) 
     .defaultValue('') 
     .template('<div class="input-group"><input type="text" ng-model="value" placeholder="Search..." class="form-control"></input><span class="input-group-addon"><i class="glyphicon glyphicon-search"></i></span></div>') 
    ]) 
    .listActions(['edit', 'show']); 

i listTemplate.html szablon, i kopiowane z kodu źródłowego NG-admin:

<div class="row list-view" ng-class="::'ng-admin-entity-' + listController.entity.name()"> 
    <div class="col-lg-12"> 
     <ma-datagrid name="{{ ::listController.view.name() }}" 
        entries="listController.dataStore.getEntries(listController.entity.uniqueId)" 
        selection="selection" 
        fields="::listController.fields" 
        list-actions="::listController.listActions" 
        entity="::listController.entity" 
        datastore="listController.dataStore"> 
     </ma-datagrid> 
    </div> 
</div> 

<div class="row" ng-if="::!listController.infinitePagination"> 
    <div class="col-lg-12"> 
     <ma-datagrid-pagination 
      page="{{ listController.page }}" 
      per-page="{{ ::listController.view.perPage() }}" 
      total-items="{{ listController.totalItems }}" 
      set-page="::listController.setPageCallback"> 
     </ma-datagrid-pagination> 
    </div> 
</div> 

<ma-datagrid-infinite-pagination ng-if="::listController.infinitePagination" 
      per-page="{{ ::listController.view.perPage() }}" 
      total-items="{{ ::listController.totalItems }}" 
      next-page="::listController.nextPageCallback"> 
</ma-datagrid-infinite-pagination> 

Ale to tylko pokazuje pusty listy, gdy Otwieram przeglądarkę, ponieważ niestandardowy szablon listView nie może uzyskać instancji listController. Czy ktoś może mi pomóc ?

Odpowiedz

4

należy skopiować szablon listLayout.html zamiast:

<div class="row list-header"> 
    <div class="col-lg-12"> 
     <div class="page-header"> 

      <ma-view-actions override="::llCtrl.actions" selection="selection" batch-buttons="::llCtrl.batchActions" entity="::llCtrl.entity" datastore="::llCtrl.dataStore" search="::llCtrl.search" filters="::llCtrl.filters" enabled-filters="llCtrl.enabledFilters" enable-filter="llCtrl.enableFilter"> 
       <ma-filter-button filters="filters()" enabled-filters="enabledFilters" enable-filter="enableFilter()"></ma-filter-button> 
       <ma-view-batch-actions buttons="::batchButtons()" selection="selection" entity="::entity"></ma-view-batch-actions> 
       <ma-export-to-csv-button entity="::entity" search="::search" datastore="::datastore"></ma-export-to-csv-button> 
       <ma-create-button ng-if="::entity.creationView().enabled" entity="::entity"></ma-create-button> 
      </ma-view-actions> 

      <h1 compile="::llCtrl.view.title()"> 
       {{ ::llCtrl.view.entity.name() | humanize | pluralize }} list 
      </h1> 
      <p class="lead" ng-if="::llCtrl.view.description()" compile="::llCtrl.view.description()">{{ ::llCtrl.view.description() }}</p> 
     </div> 

     <ma-filter-form ng-if="llCtrl.hasFilters" filters="llCtrl.enabledFilters" values="llCtrl.search" datastore="::llCtrl.dataStore" remove-filter="::llCtrl.removeFilter"></ma-filter-form> 

    </div> 
</div> 

<div ui-view="grid"></div> 
+0

Czy masz przykład obróbki tego? Chcę utworzyć niestandardową siatkę, do której chciałbym pobrać wiele elementów i dodać ją jako nową stronę, ale samo dodanie '

' w szablonie nie spowoduje jej przycięcia – Guillaume

+0

, a następnie zastąpienie '

' przez wywołanie Twojej niestandardowej dyrektywy grid! –

+0

Świetnie, mogę równie dobrze napisać cały moduł 'ng-admin', gdy jestem w tym ... musi być sposób, aby po prostu dotknąć siatki bez przepisywania całej rzeczy, prawda? – Guillaume

Powiązane problemy