2012-03-16 9 views
5

Attualmente, se definiamo la nostra vista come {{#view App.myView}}, il manubrio/brace racchiuderà l'elemento di visualizzazione all'interno di uno <div id="ember-1234" class='ember-view'>.Ember JS/Handlebars view helper

C'è un modo per fermarlo?

risposta

11

Probabilmente si desidera impostare come tagName ''.

App.MyView = Em.View.extend({ 
    tagName: '' 
}); 

Almeno smette di avvolgere il contenuto interno.

1

Presumo che si stia parlando della classe 'ember-view' che non è personalizzabile (il tipo di elemento è personalizzabile grazie all'attributo tagName ...).

In realtà, Ember utilizza in seguito questa classe per registrare (una volta!) Un listener di eventi sul documento per inviare eventi alla vista JS.

Non mi dispiace sarebbe più semplice evitare di utilizzare questa classe. Dovrebbe trovare un altro modo per selezionare l'elemento controllato di tutti gli ember, ma non ho idea di come.

Vedi source, @ linea 117.

+0

In realtà, stavo dicendo che myView verrà generato come questo

. Fondamentalmente, non voglio #myView per essere incapsulato all'interno di # ember-1234 –

+0

Aggiunta un'altra risposta ... –

2

Se si desidera personalizzare id vista dell'elemento, è possibile utilizzare:

{{#view App.myView id="my-id"}} 
+0

Ma è ancora racchiusa all'interno di un div quando viene generata. Voglio liberarmi del div wrapping. –

+0

Quindi quello che vuoi non è una vista ... Potresti per favore elaborare un po 'del tuo esempio di codice? Qual è il tuo obiettivo? Forse potresti semplicemente includere il tuo contenuto senza vista. –

2

solito penso mio punto di vista come wrapper. Ad esempio, se il codice html iniziale dato è:

<div class="item"><p>my stuff></p></div> 

Poi ho creare una visualizzazione con una proprietà tagName come "div" (che è di default), e la proprietà classnames come "voce". Questo renderà, con il modello corretto manubrio:

{#view App.myView} 
    <p>my stuff></p> 
{/view} 

-> render as 

<div id="ember-1234" class="ember-view item"> 
    <p>my stuff></p> 
</div> 

Poi, se avete bisogno di avere il vostro ID corretto su questo div, è possibile definire la proprietà "elementId" sulla classe di visualizzazione (prima di creare()). (@see source code)

Problemi correlati