通常,如果未设置实际模型属性,我希望我的视图默认为特定值。此占位符文本/值仅供查看,因此不应放置在模型 imo 中。
所以,这就是我最终要做的:
// Sample 'Model' for illustration purposes only.
var myModel = Ember.Object.extend({
title: null,
description: null,
thumbUrl: null
});
/**
* Sample View
* Render view properties which are actually
* computed of the actual 'content' properties
*/
var myView = Ember.View.extend({
template: Ember.Handlebars.compile('<p>Title: {{view.title}}</p> <p>Description: {{view.description}}</p> <p>Image: <img {{bindAttr src="view.thumbUrl"}}/></p>'),
title: function () {
return this.get('content.title') || 'Title goes here';// placeholder 'title' text
}.property('content.title'),
description: function () {
return this.get('content.description') || 'This is your description'; // placeholder 'description'
}.property('content.description'),
thumbUrl: function () {
return this.get('content.thumbUrl') || 'http://placehold.it/100x100';
}.property('content.thumbUrl')
});
关于如何减少在所有这些属性(即“标题”、“描述”和“thumbUrl”上定义默认值时减少样板文件的任何建议?
我查看了Ember.computed.defaultTo但无法理解如何使用它。这就是我对它的实际设想:
var myView = Ember.View.extend({
template: Ember.Handlebars.compile('<p>Title: {{view.title}}</p> <p>Description: {{view.description}}</p> <p>Image: <img {{bindAttr src="view.thumbUrl"}}/></p>'),
title: Ember.computed.defaultTo('content.title', 'Title goes here'),
description: Ember.computed.defaultTo('content.description', 'This is your description'),
thumbUrl: Ember.computed.defaultTo('content.thumbUrl', 'http://placehold.it/100x100')
});
那么如何做到这一点呢?
如果有更好的方法来做这种事情,我想在评论中听到它们。
此外,指向Ember.computed.defaultTo所做的事情的指针也会非常有帮助。