我在 ember 中遇到表单问题, Controller 内的 this.getProperties
为所有属性返回 undefined
。这是我的代码:
设置.hbs:
<form {{action 'saveSettings' on='submit'}}>
<label for="email">Email</label>
<p>
{{input id='email' placeholder='Enter Email' value=model.email}}
</p>
<label for="name">Name</label>
<p>
{{input id='name' placeholder='Enter Name' value=model.name}}
</p>
<label for="surname">Surname</label>
<p>
{{input id='surname' placeholder='Enter Surname' value=model.surname}}
</p>
<label for="skype">Skype</label>
<p>
{{input id='skype' placeholder='Enter Skype' value=model.skype}}
</p>
<label for="phone">Phone</label>
<p>
{{input id='phone' placeholder='Enter Phone' value=model.phone}}
</p>
<label for="city">City</label>
<p>
{{input id='city' placeholder='Enter City' value=model.city}}
</p>
<label for="country">Country</label>
<p>
{{input id='country' placeholder='Enter Country' value=model.country}}
</p>
<button type="submit">Save Settings</button>
</form>
settings.js( Controller )
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
saveSettings() {
let {
email, name, surname, skype, phone, city, country
} = this.getProperties('email', 'name', 'surname', 'skype',
'phone',
'city', 'country');
var user = this.get('model');
user.set('email', email);
user.set(
'name', name);
user.set('surname', surname);
user.set('skype',
skype);
user.set('phone', phone);
user.set('city', city);
user
.set('country', country);
user.save();
}
}
});
settings.js(路由)
import Ember from 'ember';
export default Ember.Route.extend({
model() {
return this.store.find('user', 'me');
}
});
加载页面时,所有输入都显示正确的值,但提交表单时,所有属性均为空。我在这里呆了几个小时,但我不明白为什么它不起作用。
最佳答案
我猜问题是您的 Controller 没有您期望的属性。从你的 Controller 的代码我看到没有。设置 Controller 只定义了一个操作处理程序 (saveSettings()
),没有其他任何内容。表单正确填充了数据,因为它是模型数据(即 {{input .... value=model.email}}
),而不是 Controller 数据。
我不会描述如何使用 Controller 属性,因为我敢打赌您想要做的是更新您的用户。它是双向绑定(bind),因此不需要显式的属性修改。我认为这段代码应该可以完成工作:
export default Ember.Controller.extend({
actions: {
saveSettings() {
var user = this.get('model');
// here your user should already have updated values, no need to set them explicitly
// update the user also on backend
user.save();
}
}
});
关于javascript - ember Controller getProperties 返回 "undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36373338/