我在Embercasts上学习了完整的Stack Ember with Rails课程。由于他们还没有使用辛烷,我在必要的地方修改了代码以使用Ember 3.22。我被困在视频22中,我需要将数据传递给组件。这些数据应该只传递给组件,但是当更新其中的值时,我不希望在其他地方看到更改。
在视频中,这是在didReceiveAttrs()处理程序中处理的,但这在Octane中不可用。相反,Ember文档将one way data flow描述为自动发生的事情。在我的例子中,它不是:
{{! 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就会更新。这是怎么回事?
发布于 2020-11-19 00:14:16
Ember.js附带的<Input>组件对值使用双向数据绑定。
传递给组件的参数是不可变的。您不能更改this.args,也不能更改通过@传递的值。但作为参数值传入的对象不会被冻结。
以此模板为例:
<Input @value={{@post.title}}/>它不会改变@post,但会改变作为@post参数传入的对象的title属性。
https://stackoverflow.com/questions/64892744
复制相似问题