2

ember-validations ライブラリを使用して、アプリの新しい連絡先にフォーム検証を実装しようとしています。私は現在 Ember Data をフィクスチャと共に使用しており、このビデオの例のように検証をモデルに配置することを選択しました。私はこれに何日も取り組んできましたが、検証が機能しない理由をまだ理解できないようです. エラーが発生しているという兆候さえありません。

//app/models/contact.js

import DS from "ember-data";
import EmberValidations from 'ember-validations';

//define the Contact model
var Contact = DS.Model.extend(EmberValidations, {
  firstName: DS.attr('string'),
  lastName: DS.attr('string'),
});

//Create Contact fixtures
Contact.reopenClass({
  FIXTURES: [...]
});

Contact.reopen({
  validations: {
    firstName: {
      presence: true,
      length: { minimum: 2 }
    },
    lastName: {
      presence: true
    }
  }
});

export default Contact;

私は Ember を初めて使用し、コントローラーの代わりに次のロジックをルートに配置するように勧められました。これが ember-validation で行われている例を見たことがないので、それが検証に関する私の問題であるかどうかはわかりません。

app/routes/contacts/new.js

import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    return this.store.createRecord('contact');
  },

  actions: {
    createContact: function() {
      var contact = this.get('currentModel');

      this.transitionTo('contacts');
            contact.save();
        alert(contact.errors);
    },

    cancelContact: function() {
      var contact = this.get('currentModel');

      contact.destroyRecord();
      this.transitionTo('contacts');
    }
  }
});

私の他の疑いは、html のエラーを正しく処理していない可能性があるということですか?

//app/templates/contacts/new.hbs

{{#link-to 'contacts' class="btn btn-primary"}}Contacts{{/link-to}}
<form>
  <label>First Name:</label>
  {{input type="text" value=model.firstName}}<br>
  <span class="error"></span>
  <label>Last Name:</label>
  {{input type="text" value=model.lastName}}<br>
  <span class="error"></span>    
</form>

<button {{action "createContact"}} class="btn btn-primary">Submit</button>
<button {{action "cancelContact"}} class="btn btn-warning">Cancel</button>
<br>

これが私のコントローラーです

//app/controllers/contacts.js

import Ember from "ember";

export default Ember.Controller.extend({

});

私は Ember を楽しんでいますが、この問題は私を大いに妨げています。どんな助けでも大歓迎です。

4

1 に答える 1