一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

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

时间:2014-04-09 编辑:简简单单 来源:一聚教程网

Note:本文基于 Ember.js 1.4.0

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

 代码如下 复制代码

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

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

 代码如下 复制代码

页面的渲染结果为

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

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

ember.js 检查器

ember.js 检查器

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

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

 代码如下 复制代码

App.ApplicationRoute = Ember.Route.extend({
  model: function() {
    return {'user': '陈三', 'blog': 'http://www.111com.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。

 

热门栏目