将Ember.js用于单页网站(不是真正的网络应用程序)

时间:2015-02-10 18:06:53

标签: javascript ember.js

我只是想尝试将Ember.js用于我正在做的网站(免责声明:我是一名Java Web开发人员,GWT)。

到目前为止,我所尝试的是将整个标签代码打成这样的

<body>
  <script type="text/x-handlebars"> 
      <!-- The whole page -->
  </script>
</body>

现在,我只想利用Ember.js的内容,如组件,模型和验证我的网站。

这里涉及到的依赖关系:

   <script  src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js" type="text/javascript"></script>
   <script src="js/vendor/modernizr-2.6.2.min.js"></script>
   <script src="js/jquery-ui.js"></script>
   <script src="js/plugins.js"></script>
   <script src="js/main.js"></script>

   <!-- Ember -->
   <script src="js/libs/handlebars-v3.0.0.js"></script>
   <script src="js/libs/ember-template-compiler-1.10.0.js"></script>
   <script src="js/libs/ember-1.10.0.debug.js"></script>
   <script src="js/app.js"></script>

app.js

App = Ember.Application.create();

App.Router.map(function() {

});

问题是,当我将身体放入x-handlebars脚本时,过去工作的jQuery插件(如bxslider,carousel等)将无法处理脚本标记内的内容。

我的方法有什么问题?

1 个答案:

答案 0 :(得分:0)

在运行JQuery代码后,正在呈现<script type="text/x-handlebars">Script</script>中呈现的内容。您可以通过使用didInsertElementview中的component事件进行修改来修复此问题,以运行初始化已呈现视图中元素所需的任何代码。

didInsertElement: function() {
    this.$().DoStuff();
}

StackOverflow还有很多其他问题 - 例如this one - 解决类似的问题,因此您应该能够调整他们的方法。