Ember.js 将数据传递到Ember辛烷值组件时不需要的双向数据绑定

Ember.js 将数据传递到Ember辛烷值组件时不需要的双向数据绑定,ember.js,ember-octane,Ember.js,Ember Octane,我正在跟踪Rails课程的完整堆栈余烬。由于他们还没有使用辛烷值,我在需要使用Ember 3.22的地方修改了代码。我被困在视频22中,需要将数据传递给组件。这个数据应该只传递给组件,但是当更新组件内部的值时,我不希望在其他地方看到更改 在视频中,这是在didReceiveAttrs()处理程序中处理的,但在辛烷值中不可用。相反,余烬文档描述的是自动发生的事情。就我而言,它不会: {{! author.edit.hbs !}} <h3>Editing: {{model.last}}

我正在跟踪Rails课程的完整堆栈余烬。由于他们还没有使用辛烷值,我在需要使用Ember 3.22的地方修改了代码。我被困在视频22中,需要将数据传递给组件。这个数据应该只传递给组件,但是当更新组件内部的值时,我不希望在其他地方看到更改

在视频中,这是在
didReceiveAttrs()
处理程序中处理的,但在辛烷值中不可用。相反,余烬文档描述的是自动发生的事情。就我而言,它不会:

{{! author.edit.hbs !}}

<h3>Editing: {{model.last}},  {{model.first}}</h3>
<AuthorForm @author={{model}} />

{{! author-form.hbs !}}

<div class="field">
  <label for="first">First name</label>
  <Input @id="first" type="text" placeholder="First name" @value={{this.author.first}}/>
</div>  

<div class="field">
  <label for="last">Last name</label>
  <Input @id="last" type="text" placeholder="Last name" @value={{this.author.last}}/>
</div>
{{!author.edit.hbs!}
编辑:{{model.last},{{model.first}
{{!author-form.hbs!}
名字
姓
每当我更改一个组件输入中的值时,
h3
就会更新。这里出了什么问题?

Ember.js附带的
组件对值使用双向数据绑定

传递给组件的参数是不可变的。您不能更改
this.args
或通过
@
传递的值。但作为参数值传入的对象不会冻结

以该模板为例:

<Input @value={{@post.title}}/>


它不会变异
@post
,而是作为
@post
参数传入的对象的
title
属性。

如果我从value属性中删除“@”,它会正常工作:
,但根据,只有@value是正确的。本课程如何处理数据绑定?如果你不想传播这种变化,你需要先改变一下你的做法,把数据存储到其他地方,然后在适当的时候更新模型。我真的不知道如何回答你的问题。这是一个复杂的问题,另一方面,在这里没有那么重要,因为我必须修改代码,使其与辛烷值一起工作。毕竟,我保留了
Input
组件,并在
@value
属性中使用了复制的值。这对我不起作用。当我使用这种语法(在我的例子中)然后在输入字段中添加几个字母时,这些字母也会出现在组件外部的
h3
中。这不是为了修复,只是为了解释发生了什么。我明白了。你在第一句话中写了“used”,所以我认为双向数据绑定只适用于
输入
前辛烷余烬中的组件。我想我将使用本机的
输入
字段。很抱歉造成这种混乱。改为使用。