正在读取Ractive.js中的计算属性
Reading computed properties in Ractive.js
我正在努力找出实现这一目标的最佳方式。我可能会用错误的方式思考,但这正是我"想要"实现的:
<div>
{{#if selection}}
<div>There is a selection in Component!</div>
{{/if}}
<Component />
</div>
其中selection
是Component
中的计算属性,我希望在外部范围中使用它。有没有任何方法可以引用组件实例的属性?
例如:
<div>
{{#if foo.selection}}
<div>There is a selection in Component!</div>
{{/if}}
<Component id="foo" />
</div>
或者这是错误的思考方式。我唯一能想到的其他方式就是使用事件。
<div>
{{#if selection}}
<div>There is a selection in Component!</div>
{{/if}}
<Component on-selection="select" />
</div>
但这并不优雅,因为它需要额外的代码:
ractive.on("selection", function(e) { this.set("selection", ...); });
从版本0.8
开始,可以直接将事件映射到数据值(请参阅http://jsfiddle.net/0zubyyov/)它很好地将组件内部与父级解耦:
模板:
<script id='template' type='text/ractive'>
{{#if selected}}selected!{{/if}}
<component on-select='set("selected", $1)'/>
</script>
<script id='component' type='text/ractive'>
<input type='checkbox' on-change='fire("select", event.node.checked)'>
</script>
javascript:
Ractive.components.component = Ractive.extend({
template: '#component',
data: { selected: false }
});
var r = new Ractive({
el: document.body,
template: '#template'
});
使用0.7
,您可能会考虑将一个值传递给保持最新的组件(请参阅http://jsfiddle.net/gr6d7vs8/)。我在这篇文章中更明确地谈到了处理计算的属性:
<script id='template' type='text/ractive'>
{{#if selected}} selected! {{/if}}
<component selected='{{selected}}'/>
</script>
<script id='component' type='text/ractive'>
<input type='checkbox' checked='{{checked}}'>
</script>
javascript:
Ractive.components.component = Ractive.extend({
template: '#component',
data: { checked: false, allowed: true },
computed: {
isChecked () {
return this.get('checked') && this.get('allowed')
}
},
oninit(){
this.observe('isChecked', isChecked => {
this.set('selected', isChecked);
});
}
});
相关文章:
- Ember服务在注入组件并在计算属性中使用后是未定义的
- Ember.js:未在组件'中渲染的模型的计算属性;关于变更的参考
- 升级到Ember 1.0计算属性在视图中不再有效
- ES6非结构化中的计算属性-非结构化整体对象
- 在Ember中,can服务具有计算属性
- Ember.js数组控制器计算属性的复选框
- 在ember.js中访问模型之外的计算属性
- Vue.js在计算属性中设置值
- Ember使用参数计算属性
- ember.js计算属性中this的值是如何定义的
- Google Chrome中的计算属性名称({[a]:1})
- Backbone.js在模型后面添加了一个计算属性's已解析
- Ember-自定义计算属性,用于检查是否存在所有依赖字段
- 阻止在knockout.js中运行计算属性(dependenobservable)
- 使计算属性依赖于emberjs中另一个对象的所有属性
- 如何使用ES6在Ember中声明可观察性或计算属性
- 如何在Ember.js中创建一个计算属性来查看单个EmberData属性是否脏
- Coffescript 和 Ember.js计算属性
- 记录未按时加载到组件中的计算属性
- 如何创建向属性加 1 的 Ember 计算属性