0

私は Ember が初めてで、非常に単純なはずです。実際にフォームを検証しようとしています。ember-formsember-validationsの使用。

これが構造の一部です。要点を理解できるように徹底的に説明しますが、実際には多くのコードはありません。

 /app
   /controllers
     /admin
       /create-user.js
   /models
     /admin
       /create-user.js
   /routes
     /admin
       /create-user.js
   /templates
     /admin
       /create-user.js

まず、特にモデルに関して、それが良い構造であるかどうかはわかりません。

モデル:

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

export default DS.Model.extend(EmberValidations, {
  entity: DS.attr()
}).reopen({
  validations: {
    entity: {
     presence: true,
     length: { minimum: 5 }
    }
  }
});

コントローラー:

import Ember from 'ember';

export default Ember.Controller.extend({
  actions: {
    createUser() {
      console.log("create");
    }
  }
});

ルート:

import Ember from 'ember';

export default Ember.Route.extend({
  model: function() {
    return this.store.createRecord('admin/create-user');
  }
});

テンプレート:

<h3>Create User</h3>

<div class="row">
  <div class="col-sm-6">
    {{#em-form action="createUser" model=admin/create-user}}
      {{em-input
        label="Name / Entity"
        property="entity"
        placeholder="The name of the user or the entity"}}

    {{/em-form}}
  </div>
</div>

私は何かが欠けていることを知っており、それがモデルに関係していると確信しています(model=admin/create-userテンプレートなどで多くのことを試しました)。

編集:コンソールにエラーなどはありません。検証は呼び出されません。

助けてくれてありがとう!

4

1 に答える 1

1

私が最初に飛び出すのは、コードのどこでも、次の方法でデータが有効かどうかを確認しないという事実です。

// Somewhere in your controller
this.get('isValid');

2 つ目は、検証がモデルではなくコントローラーで定義されていることです。これは、プロパティを自動的にモデルにプロキシするコントローラーを拡張する場合ObjectController(現在は非推奨) にうまく機能します。

拡張Controllerしていてモデルを検証したい場合は、少し異なる方法で定義する必要があります。

validations: {
  'model.entity': {
    presence: true,
    length: { minimum: 5 }
  }
}

3 つ目は、実際にはモデルのインスタンスをルート経由でコントローラーに渡していないことです (検証は引き続き機能するはずですが)。

export default Ember.Route.extend({
  model: function() {
    // assuming you're using Ember Data
    // find the model with id of 1
    return this.store.find('admin/create-user', 1);
  }
});
于 2015-08-27T01:00:30.600 に答える