无法在控制器

时间:2015-12-04 07:18:01

标签: ember.js ember-data

我有一个简单的模型名为" 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种建议的语法似乎都不起作用。 我收到以下每条错误消息:

         
  1. 断言失败:路径' model.name'如果没有给出obj,则必须是全局的。错误:断言失败:路径' model.name'如果没有给出obj,则必须是全局的。
  2.     
  3. 您需要为`set`提供一个对象和键。错误:断言失败:您需要为`set`。
  4. 提供一个对象和键     
  5. 无法阅读属性'设置' null TypeError:无法读取属性' set'为null
  6.     
  7. 路径中的对象"模型"无法找到或被摧毁。错误:属性集失败:路径中的对象"模型"无法找到或被摧毁。

似乎在告诉我' 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'在控制器“初始化”时加载。钩被称为?

2 个答案:

答案 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);
}