【问题标题】:Ember view - how to manipulate DOM after UI rendered without modifying the original source code?Ember 视图 - UI 渲染后如何在不修改原始源代码的情况下操作 DOM?
【发布时间】:2013-01-08 00:19:23
【问题描述】:

由于某些原因,我只能在 Ember 应用程序创建后添加 javascript(即所有 UI 都已启动)。

HTML 如下所示:

<div id="ember21643" class="ember-view form_field ticket_type_id has-ticket-type-field">
    <label for="">
    <script id="metamorph-249-start" type="text/x-placeholder"></script>
    Type
    <script id="metamorph-249-end" type="text/x-placeholder"></script>
    </label>
    <div id="zd_mn_385" class="zd-selectmenu zd-selectmenu-root zd-state-default">
        <button id="zd_mn_386" class="zd-selectmenu-base" role="button" tabindex="0" style="width: 131px; "><span class="zd-selectmenu-base-arrow zd-icon-triangle-1-s"></span><span id="zd_mn_387" class="zd-selectmenu-base-content">-</span></button>
    </div>
</div>

使用 jQuery 来直接修改 DOM 很容易,但我担心它会破坏 Ember 应用程序。

有没有合适的方法来改变这个视图,例如:

  • 在 div 容器中追加/追加文本
  • 将文本更改为其他内容,而不是上面示例中的“类型”。

使用 DOM 检查,该视图看起来可以从以下位置访问:

Ember.View.views.ember21643

Ember.View.views.ember21643._childViews[0] 

指向“标签”。所以我设置了

Ember.View.views.ember21643._childViews[0]._lastNormalizedValue = "ABC" 

但它仍然在屏幕上显示“类型”,所以这可能不是正确的方法。

请帮忙。非常感谢。 (我是 Ember 的新手)。

【问题讨论】:

  • “不修改原始源代码”是什么意思?您是否正在尝试编写一些与正在运行的 ember 应用程序交互但无法修改该应用程序源代码的 JS 代码?
  • @Michael:是的,这正是我想要做的。除了上述之外,我还发现 Ember.View.views.ember21643._childViews[0] 指向的是“标签”。所以我改变了 Ember.View.views.ember21643._childViews[0]._lastNormalizedValue = "ABC" 但它仍然在屏幕上显示“类型”......有什么想法吗?

标签: javascript html ember.js


【解决方案1】:

我不确定我是否错过了您的观点,但是,如果我想更改 ember 视图中的文本,我想我会使用 Ember 绑定。

模板

<div id="someView" type="text/x-handlebars">
  This sentence has a dynamic {{ end }}
</div>

查看

App.someView = Ember.View.extend({
  end : 'conclusion',
  templateName: 'someVIew' //not really necessary with new router to be explicit 
})

带绑定的视图

App.someView = Ember.View.extend({
  endBinding : 'contoller.end',
  templateName: 'someVIew' //not really necessary with new router to be explicit 
})

这些有帮助吗? :)

【讨论】:

  • 实际上我没有访问车把模板的权限。假设一个网站正在运行 ember 应用程序。之后它会加载我的 JS 脚本以在当前文本之前添加标题文本(当前文本是从应用程序呈现的,现在它在屏幕上),然后将当前文本更改为一些描述。
猜你喜欢
  • 1970-01-01
  • 2012-07-01
  • 2012-09-15
  • 2017-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多