0
參考http://emberjs.com/api/data/classes/DS.Errors.html爲什麼錯誤不會顯示在模板上?
我有一條路線checkout.address
這使得app/templates/checkout/address.hbs
。它具有如下:
- 兩種形式
- 一種形式,允許用戶創建一個新的 地址
- 一個形式爲每個現有的地址,這樣用戶可以在 編輯任何他們
當我嘗試創建或更新地址時,使用無效值。由於API返回驗證錯誤,該應用程序投訴。這是預期的。在灰燼督察的Network
標籤證實API的形式返回的錯誤:
errors: Object
street: Array
0: can't be blank
然而,這些錯誤不顯示任何形式。我會期望下面的行做到這一點:
{{#each error in errors.street}}
<br />{{error.message}}
{{/each}}
我在做什麼錯了?
代碼:
// app/router.js
import Ember from 'ember';
import config from './config/environment';
var Router = Ember.Router.extend({
location: config.locationType
});
Router.map(function() {
this.route('checkout', function() {
this.route('address');
});
});
export default Router;
// app/controllers/checkout/address.js
import Ember from 'ember';
// export default Ember.ArrayController.extend({
export default Ember.ObjectController.extend({
actions: {
create: function() {
var _this = this;
// this.get('model').save().then(function(address){
this.store.createRecord('address', {
street: this.get('street')
}).save().then(function(address){
// address.save().then(function(address){
_this.transitionToRoute('addresses.index', address);
}, function(errors) {
// console.log(errors);
// Need this promise, so we can render errors, if any, in the form
// console.log('error');
});
},
update: function(address) {
var _this = this;
address.set("street", address.get('street'));
address.save().then(function(){
_this.transitionToRoute('checkout.address');
}, function() {
console.log('here');
// Need this promise, so we can render errors, if any, in the form
});
return false;
}
}
});
// app/templates/checkout/address.hbs
<h1>Addresses</h1>
<p>Create address:</p>
<form {{action "create" on="submit"}}>
<p>
<label>Street:
{{input value=street placeholder="Foo street"}}
</label>
{{#each error in errors.street}}
<br />{{error.message}}
{{/each}}
</p>
<input type="submit" value="Create"/>
</form>
<ul>
{{#each model}}
<li>
Address: {{street}}
<form {{action "update" this on="submit"}}>
<label>street:
{{input value=street placeholder="Foo Street"}}
</label>
{{#each error in errors.street}}
<br />{{error.message}}
{{/each}}
</p>
<input type="submit" value="Update"/>
</form>
</li>
{{/each}}
</ul>
嗯 - 它應該工作,然後...你可以把它扔進一個jsbin? – Kalman 2015-01-15 17:26:39
我認爲這是問題所在。 'create'動作不能與路線中的模型鉤子一起操作。所以''{#each error in model.errors.street}}'或'{{#each error in errors.street}}'在模板中沒有做任何事情 – 2015-01-15 17:53:44