EmberJS:从组件js中访问组件html

时间:2016-06-15 09:13:00

标签: ember.js

有没有办法从组件JS文件中访问组件初始化的内部内容。我基本上希望能够获得收益。

例如,假设我有一个使用此模板的hbs:

{{#my-component}}
  <span>bla bla {{foo}}</span>
{{/my-component}}

然后我希望在我的组件中访问上面的跨度,如下面的示例所示,在theInnerHtml中,我想获得初始化组件中的内容。

import Ember from 'ember';

export default Ember.Component.extend({

  didInsertElement() {
    let theInnerHtml = this.get('innerHTML'); // "<span>bla bla {{foo}}</span>"
  }
});

2 个答案:

答案 0 :(得分:3)

你可以使用已经内置到Ember中的jQuery来获取你正在寻找的元素的jQuery对象,

    Document doc = Jsoup.parse(new File("filename"));        
    Elements superUserInfos = doc.getElementsByClass("superviewer");        
    for(Element superUserInfo:superUserInfos){
        String info=superUserInfo.text();
        Elements siblings = superUserInfo.siblingElements();
        List<Element> elementsBetween = new ArrayList<Element>();
        for (Element sibling:siblings) {
          if ((! "div".equals(sibling.tagName())))
            elementsBetween.add(sibling);
            break;
        }
        if (! elementsBetween.isEmpty()){
          processElementsBetween(elementsBetween);
        elementsBetween.clear();
        }
    }

或者你可以使用Ember Component的元素属性: http://emberjs.com/api/classes/Ember.Component.html#property_element

import Ember from 'ember';

export default Ember.Component.extend({

  didInsertElement() {
    let theInnerHtml = this.$('span').html();
  }
});

答案 1 :(得分:0)

一种方法是制作一种kendo-component组件,其唯一目的是初始化kendo组件。

模板有一个简单的{{yield}},允许我们通过this.$().html();获取产生的内容,实际上是将传递给kendo ui组件的模板。