对于问题的名称道歉,您将很快理解我的意思。
在Ember网站上,如果您按照给出的示例,您将获得以下内容:
Ember.Handlebars.helper('fullName', function(person) {
return person.get('firstName') + ' ' + person.get('lastName');
}, 'firstName', 'lastName');
但如果你拿出功能结束它仍然有效:
Ember.Handlebars.helper('fullName', function(person) {
return person.get('firstName') + ' ' + person.get('lastName');
});
添加/删除这些值是否有任何优势和劣势。
答案 0 :(得分:2)
这些值表示此帮助程序绑定到的属性。这意味着如果这些属性的值发生更改,则将更新帮助程序。 以下示例演示了这一点,
http://emberjs.jsbin.com/udOkupe/1
按下测试按钮会更改firstName值,只会更新其中一个 fullName助手。
<强> HB 强>
<script type="text/x-handlebars">
<h2>Welcome to Ember.js</h2>
{{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="index">
{{firstName}}<br/>
{{lastName}}
<br/>
{{fullName this.model}}<br/>
{{fullName2 this.model}}<br/>
<button {{action "test"}}>test</button>
</script>
<强> JS 强>
App = Ember.Application.create();
App.Router.map(function() {
// put your routes here
});
App.IndexRoute = Ember.Route.extend({
test:null,
model: function() {
this.set("test",App.Person.create({firstName:"my fname",lastName:"my lastname"}));
return this.get("test");
}
,
actions:{
test:function(){
this.get("test").set("firstName","lallalal");
}
}
});
Ember.Handlebars.helper('fullName', function(person) {
return "fullName:"+person.get('firstName') + ' ' + person.get('lastName');
}, 'firstName', 'lastName');
Ember.Handlebars.helper('fullName2', function(person) {
return "fullName:"+person.get('firstName') + ' ' + person.get('lastName');
});
App.Person = Ember.Object.extend({
firstName:"",
lastName:""
});
答案 1 :(得分:2)
第一个aproach具有依赖键,因此如果更改了firstName
或lastName
,则会更新模板。第二个只是观察人物实例,而不是你的属性。
请查看fiddle以进一步了解