我正在尝试根据路线收到的动作设置模型值。
//app/routes/map.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
return {
trail: null
};
},
actions: {
event: function(name, value) {
if (name === 'trail.selected') {
this.modelFor('map').set('trail', value);
}
}
}
});
当我尝试使用
时 this.modelFor('map').set('trail', value);
我收到以下错误:
未捕获的TypeError:this.modelFor(...)。set不是函数
当我尝试使用
时this.modelFor('map').trail = value;
我收到了这个错误
未捕获错误:断言失败:您必须使用Ember.set()将
trail
属性([object Object])设置为<nested-component@model:mtg-trail::ember617:kvdpo>
。
编辑添加模板
//app/templates/map.hbs
<h2>Trail's name: {{trail.name}}</h2>
{{#if trail}}
{{map-draw trail=trail.id}}
{{/if}}
答案 0 :(得分:2)
您的路线模型不是余烬对象,因此set
将无效。尝试:
model: function() {
return Ember.Object.create({
trail: null
});
},
此外,应该在控制器上更改动作中的模型内容。
答案 1 :(得分:0)
好吧,因为你打电话的动作是在&#39;地图&#39;路线本身,为什么不只是:
this.set('model.trail', value);