Ember.js 入门指南——调试助手

Ember不仅提供了专门用于调试Ember程序的谷歌、火狐浏览器插件“Ember Inspector”( 安装插件可能需要fa,如果你也是一个程序员我想fq对于你来说应该不是什么难事!!!),还提供了用于调试的helper。

按照惯例,先做好准备工作,分别执行Ember CLI命令创建controller、route和模板:

ember generate controller dev-helper

ember generate route dev-helper

1,日志助手{{log}}

{{log}}可以把从controller、route类传递到页面上的值以日志的形式直接输出在浏览器的控制台上。下面代码在controller类添加测试数据。

// app/controllers/dev-helper.js
 
import Ember from ‘ember‘;
 
export default Ember.Controller.extend({
       testName: ‘This is a testvalue...‘
});

我们可以在模板上直接显示字符串testName的值,也可以使用{{log}}助手以日志形式输出在控制台。当然你也可以直接使用{{log ’xxxx‘}}在控制台打印xxxx。第二点断点助手的示例中将为你演示{{log ‘xxx’}}用法。

<!-- app/templates/dev-helper.hbs -->
 
直接显示在页面上:{{testName}}
{{log testName}}

运行http://localhost:4200/dev-helper之后我们可以在页面上看到字符串testName的值。打开谷歌或者火狐的控制台(console标签下)可以看到也打印的字符的值。比较简单我就不再截图了……

2,断点助手{{debugger}}

当你需要调试的时候,你可以在模板上需要添加断点的地方添加这个助手,运行的时候会自动停在添加这个助手的地方。

{{log ‘这句话在断点前面‘}}
{{debugger}}
<br>
{{log ‘这句话在断点后面‘}}

不出意外程序会停在有{{debugger}}这一行。控制台应该会打印“这句话在断点前面”。然后通过点击下一步跳过断点,然后继续打印“这句话在断点后面”。

运行结果不好截图,请读者自己试试吧!!!

当你使用了{{debugger}},并且程序停止进入debug状态的时候,你可以直接在浏览器控制台的命令行输入get(‘key’)来获取controller设置的值。

在箭头所指的位置输入get(‘testName’),然后按enter键执行。会得到如下结果:

可以看到正确的获取到了前面在controller类里设置的值。

如果你不是在调试模式下输入get(‘testName’)那么会提示如下错误。

你还可以在遍历助手{{each}}中使用{{debugger}},点击一次“下一步”或者按F8就会执行一次循环。

首先重写route类的model回调,在里面添加测试数据。

//  app/routes/dev-helper.js
 
import Ember from ‘ember‘;
 
export default Ember.Route.extend({
       model: function() {
              return [
                     { id: 1, name: ‘chen‘, age: 25 },
                     { id: 2, name: ‘ibeginner.sinaapp.com‘, age: 2 }
              ];
       }
});

在模板的each助手中使用{{debugger}}助手。

{{#each model as |item|}}
       {{debugger}}
{{/each}}

运行,浏览器自动进入debug模式。此时你可以在浏览器控制台命令输入get(‘item.name’)来获取本次循环对象的属性值。然后你几点“下一步”或者按F8,程序自动进入到下一次循环,然后你再输入get(‘item.name’),此时得到的是本次循环对象属性值。然后点击下一步或者按F8进入第三次循环,由于route类设置返回的数组只有2个元素,第三次已经没有元素。所以这次会自动退出debug模式。

如果运行正常你可会得到下图所示的输出信息。

在调试状态下你还可以直接在浏览器控制台命令行输入context获取上下文信息。会输出本页面所包含的所有类和属性。

有兴趣的你可以一个个展开看看里面的东西。本文就不再展开看了。

上述介绍的就是Ember提供的调试助手的所有使用方法。在你开发Ember应用的时候应该是很有用的,特别是在each循环遍历的时候。

时间: 2024-11-05 13:39:04

Ember.js 入门指南——调试助手的相关文章

Ember.js 入门指南——{{link-to}} 助手

如果你不是从前面的文章看下来的你可能需要使用Ember CLI构建一个Ember项目,在Ember CLI的官网与非常详细的解释教程,不过如果你只是为了构建一个Ember项目的框架你只需要三步就可以构建. ember new appName cd appName ember server 只需要在你的终端.控制台执行这3条命令即可,不过在使用这些命令之前你需要安装node.npm等插件!!不过如果是安装Ember CLI网站上的步骤安装应该是很容易的!! 1,link-to助手常规使用 link

Ember.js 入门指南——{{action}} 助手

本系列文章全部从(http://ibeginner.sinaapp.com/)迁移过来,欢迎访问原网站. 文章地址:http://ibeginner.sinaapp.com/index.php?m=Home&c=Index&a=detail&id=61d90a090c764ccf0e2efdcfe1db295f 今天累了,偷个懒!!!!! ?

Ember.js 入门指南——总目录

Ember.js 是什么?我想对于想学习它的人应该知道它是个什么东西,如果你想了解那就赶紧去 Google 或者百度,本系列教程是通过学习官网教程然后摘抄个人觉得比较重要的部分,加上学习实例整合而成,如有疏漏欢迎提出修改意见,一起成长! Ember官网:http://emberjs.com/ 教程官网:http://guides.emberjs.com/v2.0.0/ 在此简单介绍下 Ember: Ember是一个雄心勃勃的Web应用程序,消除了样板,并提供了一个标准的应用程序架构的JavaSc

Ember.js 入门指南——路由定义

当你的应用启动的时候,路由器就会匹配当前的URL到你定义的路由上.然后按照定义的路由层次逐个加载数据.设置应用程序状态.渲染路由对应的模板. 1,基本路由 在app/router.js的map方法里定义的路由会映射到当前的URL.当map方法被调用的时候方法体内的route方法就会创建路由. 下面使用Ember CLI命令创建两个路由: ember generate route about ember generate route favorites 命令执行完之后你可在你的项目目录app/ro

Ember.js 入门指南——控制器(controller)

ember new chapter5_controllers cd chapter5_controllers ember server 从本篇开始进入第五章控制器,controller在Ember2.0开始越来越精简了,职责也更加单一--处理逻辑. 下面是准备工作. 从新创建一个Ember项目,仍旧使用的是Ember CLI命令创建. 在浏览器执行项目,看到如下信息说明项目搭建成功. Welcome to Ember 1,控制器简介 控制器与组件非常相似,由此,在未来的新版本中很有可能组件将会完

Ember.js 入门指南——路由简介

从本文开始,将为大家介绍路由(route),如果你看过前面的<Ember.js 入门指南--{{link-to}} 助手>这篇文章应该初步了解了route.不过在这篇文章中只是简单介绍了路由是定义.路由层次,更深入的route将从本文开始逐一介绍. 当用户使用你的应用时,应用要在不同的状态之间切换.Ember提供了很多工具用于管理那些因应用规模改变而改变的状态. 讲route前先了解URL,在应用中大概会会有如下方式设置URL: 用户第一次加载应用的时: 用户手动改变URL,比如点击按钮之后跳

Ember.js 入门指南——属性传递

1,传递参数到组件上 每个组件都是相对独立的,因此任何组件所需的数据都需要通过组件的属性把数据传递到组件中. 比如上篇<Ember.js 入门指南--组件定义>的第三点"{{component item.pn post=item}}"就是通过属性post把数据传递到组件foo-component或者bar-component上.如果在index.hbs中是如下方式调用组件那么渲染之后的页面是空的. {{component item.pn}} 请读者自己修改index.hbs

Ember.js 入门指南——包裹内容

准备工作: ember g route wrapping-content-in-component-route        ember g component wrapping-content-in-component 有些情况下,你需要定义一个包裹其他模板提供的数据的组件.比如下面的例子: <!--  app/templates/components/wrapping-content-in-component.hbs  -->   <h1>{{title}}</h1>

Ember.js 入门指南——异步路由

本文将为你介绍路由的高级特性,这些高级特性可以用于处理项目复杂的异步逻辑. 关于单词promises,直译是承诺,但是个人觉得还是使用原文吧.读起来顺畅点. 1,promises(承诺) Ember的路由处理异步逻辑的方式是使用promises.简而言之,promises就是一个表示最终结果的对象.这个对象可能是fulfill(成功获取最终结果)也可能是reject(获取结果失败).为了获取这个最终值,或者是处理promises失败的情况都可以使用then方法,这个方法接受两个可选的回调方法,一