0

我正在关注Embercasts上的 Full Stack Ember with Rails 课程。由于他们还没有使用 Octane,我在必要时更改了代码以使用 Ember 3.22。我被困在视频 22 中,我需要将数据传递给组件。这个数据应该只传递给组件,但是当更新其中的一个值时,我不想看到其他地方的变化。

在视频中,这是在处理程序中didReceiveAttrs()处理的,但这在 Octane 中不可用。相反,Ember 文档将一种数据流描述为自动发生的方式。就我而言,它不会:

{{! 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>

h3每当我更改组件输入之一中的值时都会更新。这里有什么问题?

4

1 回答 1

1

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

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

以这个模板为例:

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

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

于 2020-11-18T16:14:16.250 回答