2015-07-13 41 views
1

這個問題是關於特定的插件--embe-cli-simple-validation。使用ember-simple-validaiton驗證hasMany關係上的屬性

讓我們假設有兩種型號

User = DS.Model.extend({ 
    name: DS.attr() 
    emails: DS.hasMany('email') 
}) 

Email = DS.Model.extend({ 
    address: DS.attr() 
    emails: DS.belongsTo('user') 
}) 

和用戶動態地創建電子郵件:

<button {{action 'createEmail'}}>Add Email</button> 
{{#each model.emails as |email index|}} 
    {{input value=email.address}} 
{{/each}} 

是有可能使用的餘燼,簡單validaiton在這種情況下對驗證地址的存在每封電子郵件?

我試着去與validateEachhttps://github.com/toranb/ember-cli-simple-validation/blob/master/addon/mixins/validate.js#L66

控制器上得到一個Error while processing route: profile self.get(...).forEach is not a function TypeError: self.get(...).forEach is not a function錯誤:

import Ember from 'ember'; 
import {ValidationMixin, validateEach} from "ember-cli-simple-validation/mixins/validate"; 

var isLegit = function(address) { 
    return address && address.length > 3; 
}; 

export default Ember.Controller.extend(ValidationMixin, { 
    emailAddressValidation: validateEach("model.emails", isLegit), 
    actions: { 
    createChildren: function(type) { 
     this.store.createRecord(type, {profile: this.get('model')}); 
    }, 
}); 

模板:

型號:

import Ember from 'ember'; 
import DS from 'ember-data'; 

export default DS.Model.extend{ 

    address: DS.attr(''), 
    kind: DS.attr(''), 
    contactable: DS.belongsTo('contactable', { polymorphic: true, inverse: 'emails', async: false }), 

    kindIsPrimed: false, 
    kindChanged: Ember.observer('kind', function() { 
    this.set('kindIsPrimed', true); 
    }), 

    addressIsPrimed: false, 
    addressChanged: Ember.observer('address', function() { 
    this.set('addressIsPrimed', true); 
    }) 
}); 

回答

0

表面上(不運行的代碼),你可能從這個

,而不是改變你的HBS ...

{{#each model.emails as |email index|}} 
    {{input value=email.address}} 
    {{#validation-error-field submitted=submitted field="address" model=email index=index validation="basic"}}invalid address{{/validation-error-field}} 
{{/each}} 

在validateEach情況下(對數組驗證),你需要設置每次迭代的模型和索引。該模型應該仍然是個人模型(不是數組本身)。

這是一個在該附加測試參考

https://github.com/toranb/ember-cli-simple-validation/blob/master/tests/dummy/app/templates/many.hbs

又如