Ember.js中model 与 content 属性的区别

Note:本文基于 Ember.js 1.4.0

Ember.js 里,路由(route)通过 setupController 方法设置控制器(controller)属性:

 代码如下 复制代码

App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    return {'user': '陈三', 'blog': 'http://www.111cn.net/'};
  },
  setupController: function(controller, model) {
    controller.set('model', model); // <- 这里,我们把 model 内容指派给控制器的 model 属性
  }
});

前端模板里,可以直接引用对象的属性:

 代码如下 复制代码

<script type="text/x-handlebars">
  用户{{user}}的博客地址是{{blog}}
</script>

页面的渲染结果为

用户陈三的博客地址是http://www.111cn.net

 但如果用 Ember.js Inspector2 检查 ApplicationController 的属性,如下图:

ember.js 检查器

我们并没有看到一个叫 model 的属性,相反,有一个 content 的属性包含着我们指派给 model 的内容。

如果在 setupController 里把 model 换成 content 如何?

 代码如下 复制代码

App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    return {'user': '陈三', 'blog': 'http://www.111cn.net/'};
  },
  setupController: function(controller, model) {
    controller.set('content', model); // <- 这回,我们把 model 内容指派给控制器的 content 属性
  }
});

实践证明,content 与 model 属性是等效的。

更准确的说,model 只是 content 通过 Ember.computed.alias3 设置的一个别名4:

 代码如下 复制代码

    model: Ember.computed.alias(‘content’),

至于为什么要设置这样一个别名,可以看 Github 上的一个讨论5。

 

时间: 2024-09-10 19:22:07

Ember.js中model 与 content 属性的区别的相关文章

JS中attr和prop属性的区别以及优先选择示例介绍_基础知识

相比attr,prop是1.6.1才新出来的,两者从中文意思理解,都是获取/设置属性的方法(attributes和properties).只是,window或document中使用.attr()方法在jQuery1.6之前不能正常运行,因为window和document中不能有attributes.prop应运而生了. 既然我们想知道他们两的区别,最好就看看他们的源代码,不要被代码长度所吓到,我们只看关键的几句: attr: function( elem, name, value, pass )

怎么从另一个js中获取里面的属性值

问题描述 怎么从另一个js中获取里面的属性值,请高手指教.集 解决方案 解决方案二:说下你用的场景啊,如果是同一个页面的话,定义出来的全局变量都是可以共享的,当然,先加载的js先执行有啥疑问继续回帖吧解决方案三:收说一下情景~~~解决方案四:观注.....解决方案五:楼主能够将问题说具体些,太抽象了...解决方案六:document.getElementbyid("");document.getElementbyName("");

node.js中的定时器nextTick()和setImmediate()区别分析_node.js

1.node中使用定时器的问题在于,它并非精确的.譬如setTimeout()设定一个任务在10ms后执行,但是在9ms后,有一个任务占用了5ms,再次轮到定时器时,已经耽误了4ms. 好了node中的定时器就简单的讲这么多. 2.看代码: 复制代码 代码如下: process.nextTick(function(){     console.log("延迟执行"); }); console.log("正常执行1"); console.log("正常执行2

Ember.js中不使用Ember Data 创建模型的例子

Note: 本文基于 Ember.js 1.4.0 版本 1.不喜欢它 2.它还不稳定 3.后端开发的 RESTful3 API 风格不够正,Ember Data 不适用 4.其他 当然,不用它并不会怎样,因为我们还有许多轻量的替代品4,要是这些也都不喜欢,我们还可以手写5 ajax 来创建 Ember.js 的模型部分6.  代码如下 复制代码 window.App = Ember.Application.create(); // 创建 App 实例 App.Router.map(functi

Ember.js中单个模型包含多种对象例子

我们常见的一个模板一个对应  代码如下 复制代码 App.PersonRoute = Ember.Route.extend({   model: function() {     return App.Person.findAll();   },   setupController: function(controller, model) {     controller.set('model', model);   } }); 应该说,这是 Ember.js 框架适用的情景. 但某些情况下,你

Ember.js中实现像jQuery ready 事件的方法

jQuery 下,要在 DOM 准备就绪后绑定事件,可以写在 ready1 里:  代码如下 复制代码 $( document ).ready(function() {   // 事件绑定代码写在这里 }); 但 Ember.js 里我们不那么写,因为 jQuery 定义的 ready 触发时,也许 Ember.js 视图还没渲染完成,那个时候要给元素绑定事件,元素可能还不存在:你可能考虑用事件委托,但其实不必,因为 Ember.js 提供了一个更方便的事件:didInsertElement2.

js中巧用cssText属性批量操作样式_javascript技巧

给一个HTML元素设置css属性,如 复制代码 代码如下: var head= document.getElementById("head"); head.style.width = "200px"; head.style.height = "70px"; head.style.display = "block"; 这样写太罗嗦了,为了简单些写个工具函数,如 复制代码 代码如下: function setStyle(obj,c

js中不同的height, top的区别对比_基础知识

每次看到js中的 clientHeight(clientTop), offsetHeight(offsetTop),scrollHeight(scrollTop)就头大,根本分不清这几种的区别,然而碰到这些已经不 值一两次了,然后每次都要查看一下各自的区别,才能决定使用哪个. 本篇主要以chrome为准,可能各个浏览器之间还是有一些区别,但很多自己还未真正遇到过,还不是很清楚,等以后碰到了类似的兼容性问题,再记录到这里,这次就chrome浏览器中各个属性的区别做个记录,以方便以后的查看 一 cl

Node.js中Process.nextTick()和setImmediate()的区别

一.Webstrom使用node.js IDE的问题 在区别这两个函数之前来说一下Webstrom使用node.js IDE的问题,在配置Node.js的IDE了,但setImmediate().require等这些node.js中内置的函数时并不会有提示,要解决这个问题只要设置一下Webstrom,File---->Setting---->Languages&Frameworks------>Node.js and NPM中的Node.js core Library is no