gpt4 book ai didi

javascript - 在 ember.js 中保存对象时出错 : 'Object X has no method ' save''

转载 作者:行者123 更新时间:2023-11-30 17:46:15 24 4
gpt4 key购买 nike

我正在使用 Rails 和 Ember.js 构建应用程序,但在创建新对象时遇到了问题。在我的 ember Controller 中,当调用保存操作时,它会尝试调用 this.get('model').save()。实际对象只需要一个参数,称为“内容”即可创建。我收到的错误是 Uncaught TypeError: Object xstringx has no method 'save',其中 xstringx 是我在内容文本框中输入的实际值。

this.get('model') 实际上是返回一个字符串!我怎样才能让它返回我的模型?这是一些相关代码:

路线:

App.MessagesNewRoute = Ember.Route.extend({
model: function(){
this.store.createRecord('message');
},
setupController: function(controller, model){
controller.set('content', model);
},
renderTemplate: function() {
this.render('app/templates/messages/new');
}
});

Controller :

App.MessagesNewController = Ember.ObjectController.extend({
actions: {
save: function(){
return this.get('model').save().then(function(){
return _this.transitionToRoute('messages.index');
});
}
}

});

查看:

App.MessagesNewView = Ember.View.extend({
templateName: "app/templates/messages/new",
actions: {
save: function() {
console.log(arguments);
}
}
});

新消息模板:

<form role="form">
<fieldset>
<div class="form-group">
<label {{bindAttr for="contentField.field_id"}}>Content</label>
{{view Ember.TextArea valueBinding='content' class='form-control' name='content' viewName='contentField'}}
</div>
<div class="btn-group">
<button type="submit" {{action "save"}} class="btn btn-success">Submit</button>
<button class="btn btn-dancer">Cancel</button>
</div>

消息模型:

App.Message = DS.Model.extend({
content: DS.attr('string'),
user_id: DS.attr('number'),
created_at: DS.attr('string'),
updated_at: DS.attr('string'),
user: DS.belongsTo('user', {async: true}),
priority: DS.attr('number'),
priorityClass: function(user_id){
//Return the middle size until implemented
return 'importance-medium';
}.property('priority')
});

最佳答案

不确定是否是错字,但您需要从模型方法中返回数据:

App.MessagesNewRoute = Ember.Route.extend({
model: function(){
return this.store.createRecord('message');
},
setupController: function(controller, model){
controller.set('content', model);
},
renderTemplate: function() {
this.render('app/templates/messages/new');
}
});

并使用 content.contentmodel.content 就像 Michael 描述的那样

{{view Ember.TextArea valueBinding='model.content' class='form-control' name='content' viewName='contentField'}}

关于javascript - 在 ember.js 中保存对象时出错 : 'Object X has no method ' save'',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20111286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com