這裏是展示在一個視圖中使用多個文本字段的兩種方法很簡單的例子:http://jsfiddle.net/tomwhatmore/HEaGm/
第一個使用viewName
,它允許使用this.get('whateverYouPutAsViewName')
他們每個人的看法接入綁定的文本框,以他們的觀點。
第二個通過使用valueBinding
將文本字段的值直接綁定到Ember對象。對字段所做的任何更改都會自動更新對象。
兩者都有一個按鈕,觸發一個簡單的動作,使用這些值來顯示它們在視圖中的訪問方式。希望代碼是不言自明的。
HTML:
<script type="text/x-handlebars">
{{#view App.HelloView}}
{{view Ember.TextField viewName="firstName" placeholder="first name"}}
{{view Ember.TextField viewName="lastName" placeholder="last name"}}
<button {{action "hello"}}>Say Hello</button>
{{/view}}
{{#view App.BoundView}}
{{#with person}}
{{view Ember.TextField valueBinding="firstName"}}
{{view Ember.TextField valueBinding="lastName"}}
{{/with}}
<button {{action "hello"}}>Say Hello</button>
{{/view}}
</script>
JS:
App = Ember.Application.create()
App.HelloView = Ember.View.extend({
hello: function() {
alert("Hello " + this.get('firstName').get('value') + " " + this.get('lastName').get('value'));
}
});
App.Person = Ember.Object.create({
'firstName': 'John',
'lastName': 'Doe',
fullName: function() {
return this.get('firstName') + ' ' + this.get('lastName');
}.property('firstName', 'lastName')
});
App.BoundView = Ember.View.extend({
personBinding: 'App.Person',
hello: function() {
alert("hello " + this.get('person').get('fullName'));
}
})
感謝,正是我一直在尋找,現在是有道理的。如果我把控制器放在視圖和模型之間,它只是從視圖動作中調用控制器的一種情況,這是做這件事的正確方法,或者也可以通過綁定來完成。 – user655261 2012-02-08 16:29:51
@ user655261您可以完全相同的方式將控制器綁定到視圖,例如, 'peopleBinding:「App.peopleController」'。然後在視圖中,您通常會使用「{{#each}}」塊來遍歷該控制器。例如'{{#每個人}} {{全名}} {{/每個}}' – 2012-02-09 11:35:31