jQuery 无法在自定义 ember 的 Handlebars 助手中工作

标签 jquery ember.js handlebars.js

刚刚跟别人学了写一个helper来代替<title>在不同的模板中,然后我尝试编写这样的测试示例:

Ember.Handlebars.helper('headTitle', function (title) {
  Ember.$('head').find('title').text(title);
});

但这根本不起作用。我也尝试过使用 console.log(Ember.$('head').find('title'))看看它是否真的选择 <title>标签,但事实并非如此。接下来发生了真正奇怪的事情:加载所有代码后,我输入 Ember.$('head').find('title')在浏览器的控制台中,现在它找到了标签!

为什么 jQuery 在 Handlebars 助手中不起作用?

我把测试代码放在jsfiddle中,请帮我解决这个问题,谢谢。

http://jsfiddle.net/nightire/8arRv/1/

更新:

对不起,大家,在我使用与初始值相同的值之前,我终于让它起作用了(按照我的预期更改了 <title> 内容),所以我看不出它们之间的区别。

您可以在以下位置查看工作代码:http://jsfiddle.net/nightire/8arRv/2/

但是在这次体验中,我还发现如果我更改另一个预先存在的元素的选择器,它不会像上面的那样工作。要看到这种奇怪的行为,请查看此版本:http://jsfiddle.net/nightire/8arRv/3/

我唯一改变的是辅助函数中的选择器,而不是寻找 <title>现在我想找到一个 id 为 #title 的元素.

我还是不明白为什么,希望有人能给出解释。

最佳答案

简单地说,将 DOM 操作代码放入 Handlebars 助手中是一个糟糕的主意。 Handlebars 助手并不是为了调用随机函数,而是为了将数据插入到 DOM 中。从技术上讲,您甚至不知道如何或何时调用该方法,因为它是一个实现细节(这可能就是您的代码无法按您期望的方式工作的原因)。

如果您想更改文档标题,我建议类似 this 。有a pull request用于将 document.title 集成到 Ember,但尚未合并。

关于jQuery 无法在自定义 ember 的 Handlebars 助手中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22880946/

相关文章:

javascript - 使用cookie作为计数器?

javascript - Emberjs 输入文本字段值 Unicode 转换

javascript - Handlebars 在 #each 中的不同对象中到达一般上下文对象中的键值对

javascript - 获取每个 Handlebars 的父循环索引

javascript - 在 Ember 中使用 Sinon 的假服务器

node.js - 在 Meteor 中重用或重新创建 react 源是否更好

jquery - 使用带有嵌套 div 的 Handlebars 填充 jQuery Accordion

javascript - AngularJS 是否为简单的 AJAX 网站提供了优势

jquery - 设置父 div 的定位固定元素宽度不起作用

javascript - JQuery 函数在文档加载时不执行