javascript - 为什么在扩展 Ember.Object 时省略了 var 语句?

标签 javascript ember.js

来自Ember.js documentation :

Person = Ember.Object.extend({
   // [..]
});

这是Person的第一个定义,为什么省略了var语句?


var 在其他一些地方也丢失了,例如Ember.Application.CreateEmber.StateManager.Create .


伙计们,我知道当 var 被省略时会发生什么。但似乎没有充分的理由这样做,就像这样只会让人感到困惑。

最佳答案

它是全局声明的,因此 Ember 和 Handlebars 可以解析绑定(bind)。

例如在 View 的情况下,它是必要的,因此它可以通过 view 助手在 Handlebars 模板中实例化:

Handlebars :

<script type="text/x-handlebars" >
    {{#view MyView}}
         my view's template
    {{/view}}
</script>

JavaScript:

MyView = Ember.View.extend({});

当使用 var 语句声明 Controller 时,以下示例不起作用,请参阅 http://jsfiddle.net/pangratz666/uzsd6/ :

Handlebars :

<script type="text/x-handlebars" >
    {{controller.name}} - {{secondController.name}}
</script>​

JavaScript:

var controller = Ember.Object.create({
    name: 'my name'
});

var secondController = Ember.Object.create({
    nameBinding: 'controller.name'
});​

如果 Controller 在全局可用对象上声明,在这种情况下为 App 命名空间,则可以解析绑定(bind),请参阅 http://jsfiddle.net/pangratz666/kUmje/ :

Handlebars :

<script type="text/x-handlebars" >
    {{App.controller.name}} - {{App.secondController.name}}
</script>​

JavaScript:

App = Ember.Application.create({});

App.controller = Ember.Object.create({
    name: 'my name'
});

App.secondController = Ember.Object.create({
    nameBinding: 'App.controller.name'
});​

你应该看看 Emberist 关于 Naming Conventions 的博客在 Ember.js 中。

关于javascript - 为什么在扩展 Ember.Object 时省略了 var 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760517/

相关文章:

javascript - 返回键不适用于许多文本区域

asyncpostbacktrigger 之后未调用 Javascript 函数

javascript - Ember.js 中的类和对象混淆

javascript - 将属性设置为未定义时未通知观察者

javascript - 计算两个数组之间每个元素的数学差异

Javascript oninput(setTimeout 2s)/onchange - 首先发生火灾

javascript - 无法向 JavaScript 中动态创建的按钮添加操作

javascript - 如何在 ember.js 的模式对话框中打开路线?

javascript - 当包含 ember-data 时,TypeError DS.RESTAdapter 未定义

ember.js - 将参数传递给 Ember triggerAction,后者调用带有参数的操作