我有一个简单的模型名为" test"看起来像这样:
export default DS.Model.extend ({
name: DS.attr('string')
})
我的模型挂钩"测试"路线定义如下:
export default Ember.Route.extend({
model() {
return this.store.createRecord('test');
}
});
我尝试在" test"中为model.name分配一个初始值。控制器,但我无法获得'设置'工作。
export default Ember.Controller.extend({
init: function() {
let mod = this.get('model');
this.set (mod.name, "dummyName");
}
})
灰烬检查员说mod = null。我做错了什么?
更新的 我按照以下评论中的建议尝试了4种语法更改。似乎没有工作。我收到以下每条错误消息:
4种建议的语法似乎都不起作用。 我收到以下每条错误消息:
似乎在告诉我' model'由于某种原因是空的。
更新:我的控制器实际上是这样的:
import Ember from 'ember';
export default Ember.Controller.extend({
init: function() {
this.set ('model.name', 'dummyName');
},
actions: {
save() {
this.get('model').save();
this.transitionToRoute('scenarios');
return false;
},
cancel(){
this.transitionToRoute('scenarios');
return false;
}
}
});
使用此控制器,我收到此错误:
属性集失败:路径中的对象"模型"无法找到或被摧毁。错误:属性集失败:路径中的对象"模型"无法找到或被摧毁。
如果我拿出了初学者'勾,“保存' &安培; '取消'行动很好。命名似乎没问题;我使用ember-cli pod来生成初始代码
Is' model'在控制器“初始化”时加载。钩被称为?
答案 0 :(得分:0)
很可能模型没有加载到init钩子中。您可以稍后将代码包装起来:
init: function() {
this._super();
var _this = this;
Ember.run.later(function() {
_this.set('model.name', 'dummyName');
});
},
或者更好的方法是在创建模型时设置属性:
return this.store.createRecord({name: 'test'});
正如评论中所建议的那样。
答案 1 :(得分:0)
尝试将其添加到route.js
文件中:
setupController(controller, model) {
controller.set("model", model);
}