我对ember.js有一个恼人的问题。所以我对App.js中定义的一些路由有一个{{#link-to}}:
<script type="text/x-handlebars">
{{#link-to 'signup' class='signup-window'}} SIGN UP {{/link-to}}
{{#link-to 'login' class='signup-window'}} LOGIN {{/link-to}}
{{outlet}}
</script>
所以这是我的根模板。当我点击注册链接时,我想渲染注册模板。实际上它确实如此。问题来自于我为该链接提供的脚本:
<script>
$(document).ready(function() {
$('a.signup-window').click(function() {
var signupBox = $(this).attr('href').replace("/", "");
/*Here is the rest of the script where I manipulate the template.*/
});
});
</script>
所以我想得到点击链接的'href'属性的值。但在我这样做的过程中,实际流程如下:我点击链接,执行脚本但是ember还没有渲染模板,我在脚本中操作该模板的部分不起作用,因为实际上有没有模板可以操纵。所以我决定做一个解决方法(这不是一个好习惯,但我只是为了测试它是否会起作用)并且当我点击链接以便通过ember获得渲染模板时设置超时。但是当我这样做时,我理解实际上我失去了'this'参考(标签)。那么在那种情况下应该做什么呢?
答案 0 :(得分:1)
EmberJS中的jQuery可以通过以下方式访问:
elememt = this.$();
看看这个答案: https://stackoverflow.com/a/15017986/1153884
这个网站: http://www.lukemelia.com/blog/archives/2012/03/10/using-ember-js-with-jquery-ui/
在jQuery中调用它之前,你必须确保元素是由EmberJS放置的。您可以像这样使用didInsertElement:
:
App.SomeView = Ember.View.extend({
templateName: 'application', // I assume from your code it is the application template
didInsertElement: function() {
this.$('a.signup-window').click(function() { // you can use the this.$() ember way of calling
var signupBox = this.$(this).attr('href').replace("/", "");
/*Here is the rest of the script where I manipulate the template.*/
});
}
});