我有一个带有属性响应的模型,包含一个带有各种键和嵌套级别的json
我可以将输入字段绑定到一个缺失键,但不能更多
例如,如果加载模型后
model.response = { key1: { c1: 12} }
自然,我可以做到
{{ input value = model.reponse.key1.c1}}
并在输入字段中查看12
但是,我可以做到
{{ input value = model.reponse.key1.miss1}}
将在保存模型时记录,并在页面重新加载
中找到但我做不到
{{ input value = model.reponse.misskey1.miss2}}
有两个级别的缺失。
不仅保存了值,还保存了具有依赖键的计算属性 模型上的'reponse.misskey1.miss2'永远不会在输入更改时触发
我是否需要设置所有缺失的密钥,还是有其他方法可以使其工作?
在这种情况下,我应该使用unknwonProperty处理程序吗?
由于
答案 0 :(得分:1)
我们在其中一个项目中使用了setUnknownProperty
(或unknownProperty
)。我们没有使它递归,它只提供一个级别的未知属性。 (这对我们来说已经足够了。)因此,开发人员可以快速生成crud屏幕:
{{our-input-component "item.x" label=(t "intl.item.x")}}
{{our-input-component "item.y" label=(t "intl.item.y")}}
我们试过了这个问题,大约八个月它一直没有任何问题。
但是,这是双向绑定。您应该避免使用双向绑定。这会导致您的应用违反 Data Down Action Up 原则。
Ember输入帮助程序的常见用法与您的相同。 (value = model.reponse.misskey1.miss2
)您应该使用单向绑定进行值赋值,并且应该处理更改/输入事件以在这些事件/操作处理程序中进行属性赋值。或者使用其他组件系列,例如ember-one-way-controls。
答案 1 :(得分:0)
我在模型的ready()回调中使用了它 它的工作原理
if (this.get('response.misskey1') === undefined){
this.set('response.misskey1', {})
}