Ember JS/Handlebars view helper

本小妞迷上赌 提交于 2019-12-07 06:43:15

问题


Currently, if we define our view as {{#view App.myView}}, ember/handlebars will wrap the view element inside a <div id="ember-1234" class='ember-view'>.

Is there a way to stop this?


回答1:


You probably want to set tagName as ''.

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

At least it stops wrapping inner contents.




回答2:


If you want to customize view element's id, you can use:

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



回答3:


I usually think my views as wrapper. For example, if the initial given html code is :

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

Then I create a view with a tagName property as "div" (which is default), and classNames property as "item". This will render, with proper handlebars template :

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

-> render as

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

Then if you need to have your proper ID on this div, you could define the "elementId" property on your view class (before create()). (@see source code)




回答4:


I assume you are talking about the 'ember-view' class which is not customizable (element type being customizable thanks to the tagName attribute...).

Actually, Ember later uses this class to register (once!) an event listener on the document in order to dispatch events to the JS view.

I don't mind it would be that simpler to avoid using this class. There would have to find another way to select all ember's controlled element, but I have no idea how.

See source, @ line 117.




回答5:


If I understand you correctly you want to achieve something like jQuery's replaceWith? You can use this in Ember.js when my Pull Request gets merged: https://github.com/emberjs/ember.js/pull/574.

Also have a look at Create Ember View from a jQuery object



来源:https://stackoverflow.com/questions/9732398/ember-js-handlebars-view-helper

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!