入门指南 获取Ember 概念 对象模型 应用 模板 路由 组件 控制器 模型 视图 枚举 测式 配置Ember.js COOKBOOK 理解Ember.js

发布于 2015-08-18 16:33:40 | 280 次阅读 | 评论: 0 | 来源: 网络整理

调试Ember和Ember Data

下面是一些调试Ember应用的小技巧。

另外,检出ember-extension项目,ember-extension是一个Chrome开发工具,可以用来查看应用中的Ember对象。

路由

在日志中输出路由转换信息

 
window.App = Ember.Application.create({
  // 基础日志,例如:'Transitioned into 'post'"
  LOG_TRANSITIONS: true, 

  // 更为详尽的日志,记录切换到一个路由时所有的内部步骤,包括:
  // `beforeModel`,`model`和`afterModel`钩子,以及跳转和取消的切换的信息
  LOG_TRANSITIONS_INTERNAL: true
});
 

查看所有注册的路由

 
Ember.keys(App.Router.router.recognizer.names)
 

获取当前路由名/路径

Ember在ApplicationController中以currentRouteNamecurrentPath属性来记录当前路由和路径。currentRouteName的值(例如:"comments.edit")可以用来作为transitionTo{{linkTo}}Handlebars助手的目标参数,currentPath完整表述了路由进入的整个路径(如:"admin.posts.show.comments.edit")。

视图/模板

在日志中输出视图查询

 
window.App = Ember.Application.create({
  LOG_VIEW_LOOKUPS: true
});
 

通过DOM元素ID获取视图对象

 
Ember.View.views['ember605']
 

查看所有注册模板

 
Ember.keys(Ember.TEMPLATES)
 

Handlebars调试助手

 
{{debugger}}
{{log record}}
 

控制器

在日志中记录自动生成的控制器

 
window.App = Ember.Application.create({
  LOG_ACTIVE_GENERATION: true
});
 

Ember Data

查看ember-data的标示符映射

 
// all records in memory
App.__container__.lookup('store:main').recordCache 

// attributes
App.__container__.lookup('store:main').recordCache[2].get('data.attributes')

// loaded associations
App.__container__.lookup('store:main').recordCache[2].get('comments')
 

观察器/绑定

查看一个对象、键值的所有观察器

 
Ember.observersFor(comments, keyName);
 

在日志中记录对象绑定

 
Ember.LOG_BINDINGS = true
 

其他

查看容器中的实例

 
App.__container__.lookup("controller:posts")
App.__container__.lookup("route:application")
 

处理废弃信息

 
Ember.ENV.RAISE_ON_DEPRECATION = true
Ember.LOG_STACKTRACE_ON_DEPRECATION = true
 

实现一个Ember.onerror钩子来记录生产环境下的所有错误

 
Ember.onerror = function(error) {
  Em.$.ajax('/error-notification', {
    type: 'POST',
    data: {
      stack: error.stack,
      otherInformation: 'exception message'
    }
  });
}
 

引入控制台

如果使用imports,需要引入控制台:

 
Ember = {
  imports: {
    Handlebars: Handlebars,
    jQuery: $,
    console: window.console
  }
};
 

RSVP.Promise中的错误

有时候,在处理承诺时,错误信息并没有被正确的抛出,就好像被吞下了一样。这使得跟踪问题出在什么地方变得十分困难。不过要感谢RSVP,它内置了一种专用于处理这种情况的方法。

只需要提供一个onerror函数,供在承诺发生错误的时候被调用,来查看错误的详细信息。这个函数根据需要来设计,不过通常的方法是在其中调用console.assert在控制台里面输出错误信息。

 
Ember.RSVP.configure('onerror', function(error) {
  Ember.Logger.assert(false, error);
});
 

Ember.run.later(Backburner.js)中的错误

Backburner支持将堆栈记录汇合在一起,以便跟踪Ember.run.later中的错误实在什么地方发生的。不幸的是,这非常的缓慢,并不适用与生产环境,甚至是开发环境。

启用该模式需要设置:

 
Ember.run.backburner.DEBUG = true;
 
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务