【问题标题】:Ember.js with a third party theme template带有第三方主题模板的 Ember.js
【发布时间】:2015-06-11 14:05:22
【问题描述】:

我想将 Ember.js 与来自 Themeforest 的网站模板(带有 html、css 和 js 文件)一起使用。

模板中的主要 Javascript 文件的一个问题是它仅在文档准备好时调用一次,但我想在每次用户更改路线时调用它。

比如每次调用一个新的路由,都会有一个新的<div class="page-content"></div>,但是下面的jQuery行并没有被执行。

$('.page-content').wrapInner('<div class="page-content-inner"></div>');

你有什么想法用干净的方式解决这个问题吗?我不想更改大约 1200 行的模板的主要 Javascript 文件的每一行。

感谢您的帮助

【问题讨论】:

  • 为什么不能将html复制粘贴到本地ember模板中?
  • 这只是 JS 文件的一个大“黑匣子”,还是你可以挑选、选择你想要的部分?我假设它没有您可以为您想要的功能调用的方法?如果它确实有供您使用的方法,您可以通过为这些 JS/HTML 配对创建自己的组件来变得更加棘手。但最简单的方法是按照我在回答中提供的示例进行操作。
  • @Moogs:我给出的示例只是 Javascript 的一个小(简单)示例。有数百个类受第三方 Javascript 文件影响。

标签: javascript jquery ember.js


【解决方案1】:

您可以使用 Ember 文档中的 example,了解如何在每次转换时添加 Google 分析跟踪。

App.Router.reopen({
  notifyGoogleAnalytics: function() {
    return ga('send', 'pageview', {
        'page': this.get('url'),
        'title': this.get('url')
      });
  }.on('didTransition')
});

上面的代码会在你每次在路由之间转换时运行,你可以在一个地方定义它。

【讨论】:

  • 我使用了您建议的代码,但出现错误Uncaught TypeError: this.get is not a function。你知道为什么吗?
  • 这取决于你打电话给this.get。你能分享一个示例代码吗?就像在 gist 或 emberjs bin 中一样?您几乎只能在对象上使用this.get
  • 虽然,我相信你也可以在数组上使用this.get('firstObject')。仅供参考。
猜你喜欢
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 2018-06-05
  • 1970-01-01
相关资源
最近更新 更多