dou*_*ack 18 javascript debugging handlebars.js ember.js
我正在研究我的第一个Ember.js应用程序,并且在连接所有点时遇到了一些麻烦.如果我能够看到给定车把模板中的所有可用变量,那将非常有用.
有一个相关的问题,但您必须知道使用它的范围内的变量: 如何在Handlebars模板中添加console.log()JavaScript逻辑?
如何输出所有变量?
Eli*_*ant 10
一个好的选择是使用Handlebars助手调试模板中'this'的值:1.
{{#each}}
{{log this}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
或者,2.与@watson建议类似
{{#each}}
{{debugger}}
{{/each}}
Run Code Online (Sandbox Code Playgroud)
然后在Dev Tools中钻取"this"的Local Scope Variables

或者,3.您可以直接从Controller init方法中记录内容,例如:
App.UsersController = Ember.ArrayController.extend({
init: function() {
console.log(this);
console.log(this.getProperties('.'));
}
});
Run Code Online (Sandbox Code Playgroud)
确保你试用Firebug - 你会对事物有不同的看法,我觉得这很有帮助.但是不要完全放弃镀铬; 在某些时候你需要Ember Inspector.
我使用的是每个人都推荐的调试助手,这就是Chrome显示的方式:

当我在firebug中展开相同的对象时,我得到以下信息,包括我正在寻找的变量(sources [])以及我在Chrome中没有看到的一些其他有用的属性.

几年前我创建了Barhandles 。它将使用 Handlebars 解析器生成 AST,然后从中提取变量引用。该extractSchema方法将 \xe2\x80\x94 以及 \xe2\x80\x94 提取模式。该模式不是基于 JSON Schema 或 Joi 或任何东西。这是一种自行开发的格式,可以捕获您可以从 Handlebars 模板中提取的大部分内容。
所以,这barhandlers.extractSchema(\'{{foo.bar}}\')会产生:
{\n "foo": {\n "_type": "object",\n "_optional": false,\n "bar": {\n "_type": "any",\n "_optional": false\n }\n }\n} \nRun Code Online (Sandbox Code Playgroud)\n\n它将考虑到{{#if expr}}自动将嵌套引用设为可选。它可以根据{{#with expr}}构造正确处理范围更改,并且还允许您添加对自己的自定义指令的支持。
我们用它来对传递到模板中的数据结构进行验证,并且它在该目的上工作得很好。
\n| 归档时间: |
|
| 查看次数: |
20425 次 |
| 最近记录: |