gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:59:10 26 4
gpt4 key购买 nike

来自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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com