根据ember.js中收到的行动设置模型

时间:2015-04-30 09:46:18

标签: ember.js

我正在尝试根据路线收到的动作设置模型值。

//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}}

2 个答案:

答案 0 :(得分:2)

您的路线模型不是余烬对象,因此set将无效。尝试:

  model: function() {
    return Ember.Object.create({
      trail: null
    });
  },

此外,应该在控制器上更改动作中的模型内容。

答案 1 :(得分:0)

好吧,因为你打电话的动作是在&#39;地图&#39;路线本身,为什么不只是:

this.set('model.trail', value);
相关问题