- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
通常,如果未设置实际模型属性,我希望我的 View 默认为特定值。此占位符文本/值仅供查看,因此不应放置在模型 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')
});
那么如何做到这一点呢?
如果有更好的方法来做这类事情,我希望在评论中听到它们。
另外,指向 Ember.computed.defaultTo 所做的事情的指针也会非常有帮助。
最佳答案
这不是 Ember.computed.defaultTo
的目的。 Ember.computed.defaultTo 采用单个 defaultPath
参数。来自文档:
computed property which acts like a standard getter and setter, but defaults to the value from
defaultPath
.
如果您阅读 test , 它揭示了一些光。
testBoth('Ember.computed.defaultTo', function(get, set) {
var obj = { source: 'original source value' };
Ember.defineProperty(obj, 'copy', Ember.computed.defaultTo('source'));
equal(get(obj, 'copy'), 'original source value');
set(obj, 'copy', 'new copy value');
equal(get(obj, 'source'), 'original source value');
equal(get(obj, 'copy'), 'new copy value');
set(obj, 'source', 'new source value');
equal(get(obj, 'copy'), 'new copy value');
set(obj, 'copy', null);
equal(get(obj, 'copy'), 'new source value');
});
相反,您可以像这样编写自己的助手:
Ember.computed.defaultValue = function(dependentKey, defaultValue) {
return Ember.computed(dependentKey, function() {
return Ember.get(this, dependentKey) || defaultValue;
});
};
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.defaultValue('content.title', 'Title goes here'),
description: Ember.computed.defaultValue('content.description', 'This is your description'),
thumbUrl: Ember.computed.defaultValue('content.thumbUrl', 'http://placehold.it/100x100')
});
如果您不想创建自己的辅助函数,另一种方法是为默认值使用单独的属性,然后使用 Ember.computed.any
。
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>'),
defaultTitle: 'Title goes here',
title: Ember.computed.any('content.title', 'defaultTitle'),
defaultDescription: 'This is your description',
description: Ember.computed.any('content.description', 'defaultDescription'),
defaultThumbUrl: 'http://placehold.it/100x100',
thumbUrl: Ember.computed.any('content.thumbUrl', 'defaultThumbUrl')
});
关于ember.js - Emberjs DefaultTo 计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16802364/
通常,如果未设置实际模型属性,我希望我的 View 默认为特定值。此占位符文本/值仅供查看,因此不应放置在模型 imo 中。 所以,这就是我最终要做的: // Sample 'Model' for i
我在使用 TypeScript 和 Lodash 的输入 ( @types/lodash ) 时遇到了这个问题。 如果我在 TypeScript 的编译器选项中启用 strictNullChecks。
我是一名优秀的程序员,十分优秀!