【发布时间】:2013-05-28 22:13:17
【问题描述】:
通常,如果未设置实际模型属性,我希望我的视图默认为特定值。 此占位符文本/值仅供查看,因此不应放置在模型 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')
});
关于如何减少在所有这些属性(即“title”、“description”和“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')
});
那么如何做到这一点呢?
如果有更好的方法来做这种事情,我想在 cmets 中听到它们。
此外,指向 Ember.computed.defaultTo 功能的指针也会非常有用。
【问题讨论】:
-
我认为是defaultTo而不是defaultWith,github.com/emberjs/ember.js/blob/v1.0.0-rc.4/packages/…
-
@Unspecified 我的错。那是一个错字。更新我的问题。
-
想提一下
defaultTo已被弃用:github.com/emberjs/ember.js/pull/4979
标签: ember.js