gpt4 book ai didi

ember.js - Ember 可编辑递归嵌套组件

转载 作者:行者123 更新时间:2023-12-02 21:11:52 24 4
gpt4 key购买 nike

我目前正在尝试构建一个可以接受这样的模型的组件

      "values": {
"value1": 234,
"valueOptions": {
"subOption1": 123,
"subOption2": 133,
"subOption3": 7432,
"valueOptions2": {
"subSubOption4": 821
}
}
}

每个对象递归地创建一个新组件。到目前为止,我已经创建了这个分支和节点组件,它可以很好地接收数据并显示它,但我遇到的问题是如何编辑和保存数据。每个组件都有不同的数据集,因为它向下传递自己的子对象。

Js在这里摆弄:https://ember-twiddle.com/b7f8fa6b4c4336d40982

树分支组件模板:

{{#each children as |child|}}
{{child.name}}
{{tree-node node=child.value}}
{{/each}}

{{#each items as |item|}}
<li>{{input value=item.key}} : {{input value=item.value}} <button {{action 'save' item}}>Save</button></li>
{{/each}}

树分支组件 Controller :

export default Ember.Component.extend({
tagName: 'li',
classNames: ['branch'],

items: function() {
var node = this.get('node')

var keys = Object.keys(node);

return keys.filter(function(key) {
return node[key].constructor !== Object
}).map(function(key){
return { key: key, value: node[key]};
})

}.property('node'),

children : function() {

var node = this.get('node');
var children = [];
var keys = Object.keys(node);

var branchObjectKeys = keys.filter(function(key) {
return node[key].constructor === Object
})

branchObjectKeys.forEach(function(keys) {
children.push(keys)
})

children = children.map(function(key) {
return {name:key, value: node[key]}
})

return children

}.property('node'),


actions: {
save: function(item) {
console.log(item.key, item.value);
}
}

});

树节点组件:

{{tree-branch node=node}}

任何对我如何实现这项工作有任何想法的人都会给我很大的帮助,谢谢!

最佳答案

用途:

save(item) {
let node = this.get('node');

if (!node || !node.hasOwnProperty(item.key)) {
return;
}

Ember.set(node, item.key, item.value);
}

See working demo.

关于ember.js - Ember 可编辑递归嵌套组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33715318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com