Ember.js ember data model.save不是一个函数

Ember.js ember data model.save不是一个函数,ember.js,ember-data,Ember.js,Ember Data,我有一个带有按钮“立即确认”的页面,单击该按钮后,我将使用JSON REST适配器通过网络将其保存 /accounts/chinboon@gmail.com/verification /accounts/{email}/verification 但我得到一个“model.save不是函数”错误 模板/账户/展示/验证/索引.hbs: <section class="main-content"> <div class="container-fluid" style="bor

我有一个带有按钮“立即确认”的页面,单击该按钮后,我将使用JSON REST适配器通过网络将其保存

/accounts/chinboon@gmail.com/verification
/accounts/{email}/verification
但我得到一个“model.save不是函数”错误

模板/账户/展示/验证/索引.hbs:

<section class="main-content">
  <div class="container-fluid" style="border:1.0rem solid #fff;">
    <div class="row">
      <div class="col-xs-12 col-sm-7 col-lg-6">
        <form {{action "verifyEmail" on="submit"}}>
          <div class="form-group">
            <h2>Confirm your email now to complete the registration</h2>
          </div>

          <div class="mt10">
            <button type="submit" class="btn btn-success">CONFIRM NOW</button>
          </div>
        </form>
      </div>
    </div>
    <div class="row mt20">
      <div class="col-xs-12 col-sm-7 col-lg-6">
        You are receiving this email because ...
      </div>
    </div>
  </div>
</section>
routes/accounts/show/verification/index.js:

import Ember from 'ember';

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

  actions: {
    /* account email verification */
    verifyEmail() {
      var model = this.get('model');

      var self = this;

      <<<<<PROBLEM HERE, "MODEL.SAVE IS NOT A FUCTION">>>>>
      model.save().then(function(data) {
        // handle success
        // route user to success page
      }).catch((adapterError) => {
        console.log(adapterError);
      });
    }
  }
});
this.get('model')
内部路由将返回
model
函数,而不是通过
model
方法创建的记录。所以,您需要将此操作移动到相应的控制器,或者使用并从控制器获取模型

将操作移动到controllers/accounts/show/verification/index.js文件

import Ember from 'ember';
export default Ember.Controller.extend({
    actions: {
        /* account email verification */
        verifyEmail() {
            var model = this.get('model');
            var self = this;
            model.save().then(function(data) {
                // handle success
                // route user to success page
            }).catch((adapterError) => {
                console.log(adapterError);
            });
        }
    }
});
this.get('model')
内部路由将返回
model
函数,而不是通过
model
方法创建的记录。所以,您需要将此操作移动到相应的控制器,或者使用并从控制器获取模型

将操作移动到controllers/accounts/show/verification/index.js文件

import Ember from 'ember';
export default Ember.Controller.extend({
    actions: {
        /* account email verification */
        verifyEmail() {
            var model = this.get('model');
            var self = this;
            model.save().then(function(data) {
                // handle success
                // route user to success page
            }).catch((adapterError) => {
                console.log(adapterError);
            });
        }
    }
});

谢谢,我接受这个答案,把它移到控制器上是有效的。您是否还可以演示如何使verifyEmail()也在路由上工作?请尝试使用此
var controller=this.controllerFor(this.routeName);var model=controller.get('model')
var controller=this.controllerFor('accounts.show.verification.index');var model=controller.get('model')
@OhChinBoon如果对您不起作用,请告诉我。谢谢,我接受了这个答案,它可以将此移到控制器上。您是否还可以演示如何使verifyEmail()也在路由上工作?请尝试使用此
var controller=this.controllerFor(this.routeName);var model=controller.get('model')
var controller=this.controllerFor('accounts.show.verification.index');var model=controller.get('model')
@OhChinBoon如果对您不合适,请告诉我。
import DS from 'ember-data';

export default DS.Model.extend({
  email: DS.attr('string'),
  secretToken: DS.attr('string')
});
import Ember from 'ember';
export default Ember.Controller.extend({
    actions: {
        /* account email verification */
        verifyEmail() {
            var model = this.get('model');
            var self = this;
            model.save().then(function(data) {
                // handle success
                // route user to success page
            }).catch((adapterError) => {
                console.log(adapterError);
            });
        }
    }
});