Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 在模板中显示来自FixtureAdapter存储的单个EmberJS DS.Model_Ember.js_Ember Data - Fatal编程技术网

Ember.js 在模板中显示来自FixtureAdapter存储的单个EmberJS DS.Model

Ember.js 在模板中显示来自FixtureAdapter存储的单个EmberJS DS.Model,ember.js,ember-data,Ember.js,Ember Data,我正在尝试将Ember早午餐(原始存储库:)更新为最新的EmberJS和EmberJS数据框架。当前的问题是,我试图使用DS.Store中的DS.FixtureAdapter将原始Bob模型转换为DS.model。但是无论我尝试什么,我都会遇到数据显示的问题。以下是一些尝试: 路线: App.BobRoute = Ember.Route.extend({ model: function() { return App.Bob.find(); } }); 我得到以

我正在尝试将Ember早午餐(原始存储库:)更新为最新的EmberJS和EmberJS数据框架。当前的问题是,我试图使用
DS.Store
中的
DS.FixtureAdapter
将原始Bob模型转换为
DS.model
。但是无论我尝试什么,我都会遇到数据显示的问题。以下是一些尝试:

路线:

App.BobRoute = Ember.Route.extend({
    model: function() { 
        return App.Bob.find();
    }
});
我得到以下错误:

未捕获的TypeError:无法调用null的方法“hasOwnProperty”

如果我改走这条路线:

App.BobRoute = Ember.Route.extend({
    setupController: function() {
        App.BobController.set('content', App.Bob.find());
      }
});
我得到以下错误:

未捕获类型错误:对象App.BobController没有方法“set” app.js:184未捕获类型错误:无法调用的方法“hasOwnProperty” 空的

有什么想法吗

您可以在DS.Model-Implementation-For-Using-Local-DSStore分支中看到我当前的工作和我的尝试

商店:

App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.FixtureAdapter.create()
});
App.BobController = Em.ObjectController.extend({

});
<h2>{{fullName}}'s page!</h2>
<button class="btn btn-success" {{action doClick target="view"}}>click me</button>
{{#linkTo home}}<button class="btn" {{action doHome}}>go back home</button>{{/linkTo}}
控制器:

App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.FixtureAdapter.create()
});
App.BobController = Em.ObjectController.extend({

});
<h2>{{fullName}}'s page!</h2>
<button class="btn btn-success" {{action doClick target="view"}}>click me</button>
{{#linkTo home}}<button class="btn" {{action doHome}}>go back home</button>{{/linkTo}}
型号:

var App = require('app'),
    attr = DS.attr;

App.Bob = DS.Model.extend({

    firstName : attr('string'),
    lastName  : attr('string'),
    lyrics    : attr('string'),

    fullName: function(){
        return this.get('firstName') + ' ' + this.get('lastName');
    }.property('firstName', 'lastName')

});

App.Bob.FIXTURES = [{
    firstName: 'bob',
    lastName: 'marley',
    lyrics: 'no woman no cry!'
}];
模板:

App.Store = DS.Store.extend({
  revision: 11,
  adapter: DS.FixtureAdapter.create()
});
App.BobController = Em.ObjectController.extend({

});
<h2>{{fullName}}'s page!</h2>
<button class="btn btn-success" {{action doClick target="view"}}>click me</button>
{{#linkTo home}}<button class="btn" {{action doHome}}>go back home</button>{{/linkTo}}
{{fullName}}的页面!
点击我
{{{linkTo home}}回家{/linkTo}
之前,您需要以字符串的形式提供装置键,这就是Ember数据在内部存储它们的方式

现在,您可以使用数字或字符串作为设备ID,一切都将按预期工作


另外,在开发中应该始终使用Ember.js的调试版本,如果出现问题,它可以提供更好的错误消息。截至,如果您在
localhost
127.0.0.1

中运行它,则Ember.js的生产版本将向您发出警告。您是否可以提供使用“uncaughttypeerror:无法调用null的方法'hasOwnProperty'”获得的堆栈跟踪。它应该可以工作,但该错误不能提供足够的信息。另外,您是否正在使用Ember的调试版本?它提供了比缩小版更多的信息性错误,我认为这只是因为你错过了对象装置中的id。请记住,初始装置必须模仿后端提供的。@sly7_7设置装置中的id确实纠正了两种实现的问题。但我仍然有显示Bob数据的问题。只需使用.find()即可显示页面,但不会填充模板。然后尝试id为App.Bob.find({id:0})的特定对象;,或者使用其名称App.Bob.find({firstName:'Bob'});模板未填充。有什么想法吗?@YehudaKatz我没有使用调试版本,我现在要寻找最新版本。v>v1.0.0-pre.2-291-g4785901@SeanKeating是否可以提供JSFIDLE或jsbin?你应该能够使用这个:作为一个开始,不确定这个版本是否与你的版本完全相同。