你可以在ember.js应用程序中运行一个ember.js应用程序吗?

时间:2014-05-09 20:27:49

标签: ember.js

我们理论上需要在另一个ember小部件中运行一个ember小部件。这可能吗?将嵌套的ember小部件确定为与其父工作不同的dom元素?

我们的想法是,我们可能需要将ember小部件嵌入到也运行ember的客户网站上。

谢谢!

1 个答案:

答案 0 :(得分:0)

我不确定是否正确理解您,但如果您需要具有可以跨应用程序分发和重用的单独组件,那么您肯定可以拥有它们。虽然我不确定我是否正确,因为你似乎在谈论2个不同的问题(嵌套小部件和分发ember小部件作为其他ember应用程序的第三方......)

如果您需要更多详细信息,请使用fiddle on how to make an external component并重复使用。如果这有帮助,请告诉我。

组件:

var GravatarImageComponent = Ember.Component.extend({
    size: 200,
    email: '',

    gravatarUrl: function () {
        var email = this.get('email'),
            size = this.get('size');

        return 'http://www.gravatar.com/avatar/' + CryptoJS.MD5(email) + '?s=' + size;
    }.property('email', 'size')
});

Ember.Application.initializer({
  name: "gravatar-image-component",
  initialize: function(container, application) {
      container.register('component:gravatar-image', GravatarImageComponent);
  }
});

将其付诸实践的HTML:

<script type="text/x-handlebars">
    <ul class="example-gravatar">
      <li>{{gravatar-image email="tomster@emberjs.com" size="200"}}</li>
      <li>{{gravatar-image size="200"}}</li>
    </ul>

</script>

<script type="text/x-handlebars" id="components/gravatar-image">
    <img {{bind-attr src=gravatarUrl}}>
    <div class="email-input">
      {{input type="email" value=email placeholder="tomster@emberjs.com for instance"}}
    </div>
</script>