Ember.js 是如何生成 id 的?
How does Ember.js generate ids?
如所述here,使用ember.js,此代码:
{{#each}}
<div>
<h1>{{MyComponent}}</h1>
</div>
{{/each}}
呈现如下内容:
<div id="ember180" class="ember-view">
<h1>My Component here</h1>
</div>
我感兴趣的是:
- ember 如何决定哪个元素将获得生成的 ID?
- id 本身是如何生成的?
- 有什么办法可以保证同一个元素总是得到同一个id? (目前我看到它每次都在变化)
How does ember decide which element would get a generated id?
所有视图(包括组件)都有一个 ID,因此 Ember 可以快速找到 DOM 中的元素。唯一的例外(据我所知)是没有包装元素的视图(tagName
是一个空字符串)没有获得 ID,因为从技术上讲没有元素可以给 ID。
How does the id itself get generated?
正如 Yury 所指出的,有一个私有 Ember.guidFor()
方法可以将 ID 分配给对象。在内部,它只是一个带有字符串前缀的递增整数。
Is there any way to guarantee that the same element will always get the same id? (currently I'm seeing it changes every time)
绝对不是,即使有我也强烈建议不要使用它。您可以将自己的 ID 分配给视图和组件,Ember 将使用它们而不是生成的 ID。如果您需要知道元素的 ID,assign the ID yourself.
如所述here,使用ember.js,此代码:
{{#each}}
<div>
<h1>{{MyComponent}}</h1>
</div>
{{/each}}
呈现如下内容:
<div id="ember180" class="ember-view">
<h1>My Component here</h1>
</div>
我感兴趣的是:
- ember 如何决定哪个元素将获得生成的 ID?
- id 本身是如何生成的?
- 有什么办法可以保证同一个元素总是得到同一个id? (目前我看到它每次都在变化)
How does ember decide which element would get a generated id?
所有视图(包括组件)都有一个 ID,因此 Ember 可以快速找到 DOM 中的元素。唯一的例外(据我所知)是没有包装元素的视图(tagName
是一个空字符串)没有获得 ID,因为从技术上讲没有元素可以给 ID。
How does the id itself get generated?
正如 Yury 所指出的,有一个私有 Ember.guidFor()
方法可以将 ID 分配给对象。在内部,它只是一个带有字符串前缀的递增整数。
Is there any way to guarantee that the same element will always get the same id? (currently I'm seeing it changes every time)
绝对不是,即使有我也强烈建议不要使用它。您可以将自己的 ID 分配给视图和组件,Ember 将使用它们而不是生成的 ID。如果您需要知道元素的 ID,assign the ID yourself.