编写助手:结束参数的用途是什么

时间:2013-12-12 17:24:31

标签: javascript ember.js handlebars.js

对于问题的名称道歉,您将很快理解我的意思。

在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');
});

添加/删除这些值是否有任何优势和劣势。

2 个答案:

答案 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具有依赖键,因此如果更改了firstNamelastName,则会更新模板。第二个只是观察人物实例,而不是你的属性。

请查看fiddle以进一步了解