ember中数据一般都是以array的形式存储的,控制器使用,如: App.DataController = Em.ArrayController.extend({}); 想要在一个页面中输出所有的数据,可以在模版中使用{{#each}}输出Aarray的每个Object,这时时候可能需要对每个Object进行操作,使用ObjectController;可以在每个each中使用itemController来新建一个ObjectController: {{#each data in model i…
除了之前介绍的将数组数据在一个页面中输出的方法,还可以将数组数据分组,按照点击,在不同页面中分别显示,方法为: Model: 例如:Table Router: 设置一个父对象和子对象设置: this.resource("tables",function() { this.resource("table",{path:"/:table_id"}); //依照id输出 }); Route: App.TablesRoute = Em.Route.ext…
Model 在默认情况下,model钩子返回的值,会设置为关联的控制器的model属性.例如,如果App.PostsRoute通过model钩子返回了一个对象,这个对象会设置为App.PostsController的model属性. (模板是如何知道该使用哪个模型进行渲染的呢?模板通过查找其关联的控制器的model属性来进行渲染.例如,photos模板将会使用App.PhotosController的model属性来进行渲染.) Ember Data 在Ember中,每个路由都有与之相关联的一个…
在模版中写好响应操作触发的action之后,可以在controller:actions中设置了,需要注意的是对数据的操作一般都是对单个object进行操作,所以先要使用笔记1中的方法使用ObjectController. 新增并存储数据: 模版中可以设置 {{input type="text" class="form-control" placeholder="title" value=newTitle}} 来进行双向绑定,在控制器actions…
启动服务器 ember server 访问localhost:4200 创建新的路由:ember generate route 路由名称,运行此命令会同时创建一个/templates/.XXXhbs模板文件和/route/XXX.js文件 注:要看见新路由的内容需要,URL改为:localhost:4200/路由名称,此外,在application.hbs文件内需要有{{outlet}}…
单元测试被限定在一个范围内,并且不需要Ember应用运行. 使用前准备: 加入Ember-QUnit:获取一系列测试助手帮助单元测试:加入 mian.js; 加入根元素(与集成测试的时候一样):App.rootElement = '#ember-testing'; 设置单元测试: Ember.setupForTesting();   //关闭Ember自动运行循环的执行,让用户一定程度上控制运行循环流程: emq.globalize();   //使助手函数变成了全局可用: 解析器: setRe…
emberjs使用的测试工具为qunit.js: 加载:将runner.js添加到Index.html:大致内容: if (window.location.search.indexOf("?test") !== -1) { document.write( ‘<div id="qunit"></div>' + '<div id="qunit-fixture"></div>' + '<div id…
1.创建数组并赋值 //对象方式 var arr=new Array(1,2,3,4); //隐形声明方式 var arr2=[5,6,7,8]; 2.数组可以存储任何类型的数据 3.访问数组,是用下标的方式 //访问第一个 arr[0] arr[arr.length-1] 4.遍历数组: //for循环方式 var arr=[1,2,3,4]; for(var i=0;i<arr.length;i++){ alert(arr[i]); } //for in 方式 var arr1=[5,6,7…
1.Array构造函数有一个很大的问题,就是不同的参数,会导致它的行为不一致,es6好像专门为此对数组有升级 因此,不建议使用new Array生成新数组,直接使用数组字面量[...]是更好的做法. 2.Array.isArray方法用来判断一个值是否为数组.它可以弥补typeof运算符的不足 var a = [1, 2, 3]; typeof a // "object" Array.isArray(a) // true 3.push()和pop() 结合使用,就构成了“后进先出”的栈…
在某些情况下,我们需要根据数据生成某些效果:由于每个模版的controller可能不同,在不同页面之间跳转可能会无法随即更新的问题. controller: 直接使用标签:{{}},适用于在子项目内切换的时候及时更新: view: 使用didInsertElement: 适用于在其他页面切换到当前view的情况下:  …
在已经设置route的情况下,以table为例,可以如下设置,范围为对应的模版: App.TableView = Em.View.extend({ }); App.TableIndexView = Em.View.extend({ }); 也可以通过如下新建,其获得的this为所在模版的this; {{#view InnerView}}......{{/view}} InnerView = Ember.View.extend({}); 简单设置: 设置整体的标签: tagName 设置class…
一.JavaScript数组的奇葩 大多数语言会要求数组的元素是同个类型, 但是JavaScript允许数组元素为多种类型. var arr = ["羽毛球", 666, {"json:":"666"}]; console.log(arr.length); 二.JavaScript 数组的两种声明 1.var arr = [元素]; var arr = ["坚持"]; 2.new Array(); 或者 var arr2 =…
二维数组 例子:矩形反转: <script> var arr=[[1,1,1,1,1],[2,2,2,2,2],[3,3,3,3,3],[4,4,4,4,4],[5,5,5,5,5]]; for(var i=0;i<arr.length;i++){ for(var j=0;j<arr[i].length;j++){ document.write(arr[i][j]); } document.write("<br>"); } document.writ…
Node.js中的JSON问题   var str = '{"dir":"kunhony","param":"archive"}'; var aaa = JSON.parse(str); console.log(aaa.param); 上面的代码没有问题,但是如果将var str = '{"dir":"kunhony","param":"archive&qu…
1.基本知识 1.数组是值的有序集合.每个值叫做一个元素,而每个元素在数组中的位置称为索引,以数字表示,以0开始. 2.数组是无类型的.数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型.数组的元素可以是对象或其它数组. 3.数组是动态的,数组长度可长可短.在创建数组时无须声明一个固定的大小或者在数组大小变化时无须重新分配空间 4.数组可以是稀疏的.数组元素的索引不一定是连续的,它们之间可以有空缺,每个数组都有一个length属性,针对非稀疏数组,该属性就是数组元素的个数,针对…
init: controller中初始化方法,                               //注意该方法是在其他方法之前,所以取不出this,model等值: 跳转:this.transitionToRoute(routename,param);  //形式对应如:this.resource('question', {path: 'test/:fullname/:sequence/:guid'});…
如下代码会根据model产生不同的table项,在进行其他设置后,一般是根据id来跳转到相应项目子项中: {{#each}} {{#link-to "tabls" this}}{{name}}{{/link-to}} {{/each}} 这时候我们可能需要一额外的按钮而不是直接点击连接进行子项目的前进与后退,可采用如下方法: 方法1: 在对应controller内设置: nextId : function(){ var arrs = //获得对应子项目的content: var thi…
说明:属性值绑定(属性值有无引号都可以) 如果是非布尔值: 一般使用,绑定其值; 使用冒号时,绑定名称,如 :high -> high; 如果是布尔值: 如果值是true,绑定其名,这里要注意驼峰写法: 特殊的三个写法:都绑定书中的名称,没有驼峰写法改变: isEnable:enabled; isEnable:enabled:disabled; isEnable::disabled;…
js中对arry数组的各种操作小结   最近工作比较轻松,于是就花时间从头到尾的对js进行了详细的学习和复习,在看书的过程中,发现自己平时在做项目的过程中有很多地方想得不过全面,写的不够合理,所以说啊,为了在以后的工作中写出最优化的代码,我们必须要不断的充电,不断的提高自己的技能. 废话不多说,现在我将最近看的有关arry的一些心德和使用分享出来,希望能够给大家带来小小的一点帮助.谢谢! 可以这样说Arry应该是我们在平时写js代码中,使用频率最高的,在平时的项目中,很多数据都是可以通过arry…
今天朋友问了我这个问题:JS求多个数组的重复数据 注: 1.更准确的说是只要多个数组中有两个以上的重复数据,那么这个数据就是我需要的 2.单个数组内的数据不存在重复值(当然如果有的话,你可以去重) 3.耗时问题,这一点很重要 源代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>获取多个数组中的重复数据</…
数组分为索引数组和关联数组 js中先声明一个空数组 arr = [] 索引数组 索引是整数,如arr[0] = 'a' 关联数组 索引是自定义的字符串,如arr['a'] = 'a' js中的对象 你把它理解成关联数组就可以了 场景 自定义键值的时候使用 js中的数组 只支持索引数组 场景 需要传输多组数据 怎样在js中使用关联数组? 在js中的数组不支持关联数组arr['a'] = 'a' 如果想使用关联数组,可以用对象替换arr.a = 'a' 实践 使用ajax传多组数据 var good…
今天来学习一下js中的一维数组.二维数组,以及数组的赋值.遍历.删除.排序等操作:    1 数组的声明 js提供了一个数组对象Array,默认是一维数组,其申明的方法如下: var aCity = new Array(); 在实际应用中,可以在申明的同时,给数组进行赋值: var aCity =  new Array("北京","上海","广州"); 还可以在声明数组时,给数组指定长度: var aCity =  new Array(2); 要…
目标 在这一章,你将会使用D3.js,基于我们的数据来把SVG元素添加到网页中.这一过程包括:把数据绑定到元素上,然后在使用这些元素来可视化我们的数据. 注意:不同于前几章,我们从一个完整的代码开始,然后去一步步理解它,从这一章开始,我们将会从零开始构建我们的数据可视化. 我们的目标是使用这个数据集: var circleRadii = [40,20,10]; 然后用D3.js来将这个数据集进行数据可视化. SVG的Circle元素 首先我们要知道的是SVG的Circle元素是什么?它是怎么定义…
Angular.js 拥抱 HTML/CSS Misko Hevery(Angular.js的开发者之一)回答了这一问题,他的主要观点如下: 在HTML中加入太多逻辑不是好做法.Angular.js只放置绑定,而不是逻辑,建议把逻辑放入控制器中.但绑定同样是信息,通常,这些信息可以放在三个地方: 代码.但这使得程序模块化很成问题,因为HTML与代码紧密耦合,要想重新组成一个应用程序非常困难. HTML.这正是Angular.js所做的.除了放置绑定信息外,你不应该在HTML中做任何事情.任何逻辑…
注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是将 M 和 V 的实现代码分离,从而使同一个程序可以使用不同的表现形式. 交互方式(所有通信都是单向的): View 传送指令到 Controller Controller 完成业务逻辑后,要求 Model 改变状态 Model 将新的数据发送到 View,用户得到反馈 更详细的说明: 模型(Mod…
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的实例.日后还将对官方文档进阶和高级部分分专题进行学习并记录. 尽管前端学习面临着各种各样的焦虑,尽管越来越多的框架出现,然而无可否认的是,它们都在从不同的角度提高生产力--从这个角度而言,之所以焦虑,本质原因是因为行业的门槛其实是降低了,而自己变得"不值钱"起来.在目前的环境下,无论如何必…
本指导会详尽阐述 Ember.js 视图层的细节.为想成为熟练 Ember 开发者准备,且包 含了对于入门 Ember 不必要的细节. Ember.js 有一套复杂的用于创建.管理并渲染连接到浏览器 DOM 上的层级视图的系 统.视图负责响应诸如点击.拖拽以及滚动等的用户事件,也在视图底层数据变更时更 新 DOM 的内容. 视图层级通常由求值一个 Handlebars 模板创建.当模板求值后,会添加子视图.当 那些 子视图求值后,会添加它们的子视图,如此递推,直到整个层级被创建. 即使你并没有在…
现在,到处都可以看到复杂的 JavaScript 应用程序. 由于这些应用程序变得越来越复杂,一长串的 jQuery 回调语句,或者通过应用程序在各个点执行不同的函数调用,这些都变得无法再让人接受. 这导致了 JavaScript 开发人员了解到传统的软件程序员已经知道了几十年的问题: 组织和效率非常重要,并且可以对应用程序的性能是否优异产生重大影响. 实现组织和效率的其中一个最常用的架构模式,被称为 Model View Controller (缩写为 MVC) . 这种模式鼓励开发人员将其应…
现在,我们经常都可以看到复杂的JavaScript应用程序,由于这些应用程序变得越来越复杂,一长串的jQuery回调语句或者通过应用程序在各个状态执行不同的函数调用,这些做法都会变得无法再让人接受,这导致了JavaScript开发人员开始寻找一种组织和效率更优秀的开发方式. 实现组织和效率的其中一个最常用的架构模式,就是我们熟知的Model View Controller (MVC)模式,这种模式鼓励开发人员将其应用程序的不同部分分割为更易于管理的模块,我们不必使用一个函数直接调用数据库,通过创…
node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 http://blog.nodejs.org/ 1.4 开发工具 WebStorm6 下载地址 http://www.jetbrains.com/webstorm/whatsnew/ 二:安装配置 2.1 下载nodejs for linux (nodejs source) 2.2 nodejs安装过程中遇到的问题…