如何在 ember 视图之外获取 DOM 元素?

How to get an DOM element outside of ember view?

我目前正在开发一个应用程序,我们正在将整个应用程序移动到 ember,但截至目前,该应用程序正在使用 JSP 和 jquery。

我的问题是我的 ember 应用程序目前正通过 对象 tag.now 插入到 jsp 页面中,我想知道此标记的 class 并相应地呈现路线。

当我试图找到 $('object') 时,我一无所获。

我尝试了其他几个可用的选项,但没有成功。

我的索引路线目前正在加载主页路线,但我想根据对象标签上可用的 class 加载路线。

下面是我的index.js

import Ember from 'ember';

    export default Ember.Route.extend({
        beforeModel() {
        console.log(this);
        this.replaceWith('rentals');
      }
    });

我的 jsp 有这个代码片段,以便添加我想要的 ember 应用程序

var url = "../../rdm/ember/dist/index.html";
                if(page == "user")
                {
                    $(".ui-layout-center").html( '<object type="text/html" class="user"></object>');
                    $("object").attr('data',url);
                    mdmCurrentRequestObj = $(".ui-layout-center object");   
                }
                else
                {
                    $(".ui-layout-center").html( '<object type="text/html" class="userprofile"></object>');
                    $("object").attr('data',url);
                    mdmCurrentRequestObj = $(".ui-layout-center object");       
                }

据我所知,你应该可以正常使用JQuery。可能还有其他问题。我认为这个问题与 Ember.

没有任何关系

要尝试的事情:

  • 您是说使用三等号吗? page === "user" 单个 equals 可能会导致奇怪的事情。
  • 如果您查看 Chrome Inspector
  • ,请在 DOM 中查找对象标签
  • 当 DOM 准备就绪时,确保插入对象的代码是 运行
  • 执行一些控制台日志记录以查看是否真的找不到对象,或者属性设置只是失败
  • 尝试包括内联数据属性,例如 <object type="text/html" class="user" data=${data}></object>(将字符串用反引号而不是引号括起来)
  • 确认 ui-layout-center 作为 class 存在(例如不是 id)
  • 创建一个最小示例,将任何其他类型的元素插入 DOM,然后尝试设置属性。例如,尝试插入一个带有ID的div,然后查找

一旦您成功从 DOM 获取对象,您可能需要查询和修改对象本身的内容。其语法类似于:

$('#some-object').contents().find('.some-element').text("some text")

只是为了那些用谷歌搜索它并搜索这个答案的人,当你的元素在 DOM 之外时,你需要获取它然后进行更改。我为获取元素所做的工作如下

Ember.$(window.self.top.document).find('object').hasClass("user") 

而且效果很好。