我有一个带按钮的页面"现在确认"点击后我会通过JSON REST适配器将其保存到网络中。
/accounts/chinboon@gmail.com/verification
/accounts/{email}/verification
但我得到了一个" model.save不是一个功能"错误。
Uncaught TypeError: model.save is not a function
at Class.verifyEmail (index.js:19)
at Router.triggerEvent (ember.debug.js:28654)
at trigger (ember.debug.js:55917)
at Router.trigger (ember.debug.js:57517)
at Class.send (ember.debug.js:27844)
at Class.send (ember.debug.js:31852)
at ember.debug.js:11639
at Object.flaggedInstrument (ember.debug.js:18475)
at ember.debug.js:11638
at Backburner.run (ember.debug.js:717)
模板/帐户/显示/验证/ index.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>
router.js:
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: config.locationType,
rootURL: config.routerRootURL
});
// page route
Router.map(function() {
this.route('accounts', function() {
// /accounts/new
this.route('new', function () {
//this.route('success');
});
this.route('show', { path: '/:account_id' }, function() {
// /accounts/1/confirmation
this.route('confirmation');
// /accounts/1/verification
this.route('verification', function() {
// /accounts/1/verification/success
this.route('success');
});
});
});
});
export default Router;
路由/帐户/显示/验证/ 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);
});
}
}
});
模型/帐户verification.js:
import DS from 'ember-data';
export default DS.Model.extend({
email: DS.attr('string'),
secretToken: DS.attr('string')
});
答案 0 :(得分:2)
this.get('model')
将返回model
函数而不是您通过model
方法创建的记录。因此,您需要将此操作移动到相应的控制器或使用controllerFor并从控制器获取模型。
将操作移至 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);
});
}
}
});