Person = Ember.Object.extend({
// [..]
});
这是Person
的第一个定义,为什么省略了var
语句?
var
在其他一些地方也丢失了,例如Ember.Application.Create或 Ember.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/