Ember.js ember data model.save不是一个函数
我有一个带有按钮“立即确认”的页面,单击该按钮后,我将使用JSON REST适配器通过网络将其保存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
/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);
});
}
}
});