Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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
Javascript 未捕获类型错误:没有方法';storeKeyFor';_Javascript_Sproutcore - Fatal编程技术网

Javascript 未捕获类型错误:没有方法';storeKeyFor';

Javascript 未捕获类型错误:没有方法';storeKeyFor';,javascript,sproutcore,Javascript,Sproutcore,我刚接触Sproutcore,正在学习基础知识。我陷入了以下问题: 我有一个模型: Myapp.Space = SC.Record.extend({ id: SC.Record.attr(Number), name: SC.Record.attr(String), creator: SC.Record.toOne('Myapp.User', {isMaster: YES, inverse: 'space'}) }); Myapp.User = SC.Record.ext

我刚接触Sproutcore,正在学习基础知识。我陷入了以下问题:

我有一个模型:

Myapp.Space = SC.Record.extend({
    id: SC.Record.attr(Number),
    name: SC.Record.attr(String),
    creator: SC.Record.toOne('Myapp.User', {isMaster: YES, inverse: 'space'})
});

Myapp.User = SC.Record.extend({
    id: SC.Record.attr(String),
    name: SC.Record.attr(String)
});
以及控制器:

Myapp.spaces_controller = SC.ArrayController.create(
 {
       allowsMultipleSelection: NO,
        selection: null,
        isEditable: YES
});
在我的数据源中,我正在执行远程GET调用:

fetch: function(store, query) {
            var recordType = query.get('recordType');
            var url;
            if (recordType === Myapp.Space) {
                url = "spaces"
            }
            SC.Request.getUrl(this.baseApiUrl(store) + url).set('isJSON', YES)
                .notify(this, this._didFetch, {
                    store: store,
                    recordType: recordType
                }).send();
        },

_didFetch: function (response, params)  {
            var store = params.store,
                recordType = params.recordType;
            if (SC.$ok(response)) {
                store.loadRecords(recordType, response.get('body'));
            }
        },
当我打电话时

Myapp.spaces_controller.set('content', Myapp.store.find(Myapp.Space));
(用户登录后)我得到错误:

Uncaught TypeError: Object function (props) {
      this.__sc_super__ = ret.prototype;
      return this._object_init(props);
    } has no method 'storeKeyFor' javascript.js?1377681200:11281
SC.Store.SC.Object.extend.loadRecord javascript.js?1377681200:11281
SC.Store.SC.Object.extend.loadRecords javascript.js?1377681200:11337
Myapp.DataSource.SC.DataSource.extend._didFetch data_source.js?1378388369:39
SC.Response.SC.Object.extend._notifyListeners javascript.js?1377681198:392
SC.Response.SC.Object.extend.notify javascript.js?1377681198:413
(anonymous function) javascript.js?1377681198:314
SC.run javascript.js?1377681203:14741
SC.Response.SC.Object.extend.receive javascript.js?1377681198:298
SC.XHRResponse.SC.Response.extend.finishRequest javascript.js?1377681198:628
SC.mixin.handle javascript.js?1377681199:4249
(anonymous function)
我可以访问响应体中的对象,但存储区无法获取数据


我在网上找不到关于这个错误的任何提及。有人能帮忙吗?

对象函数(道具)的错误。。。没有方法“storeKeyFor”在我看来,您是在尝试对类而不是该类的实际实例调用函数

我的第一个猜测是,您的记录类型被设置为实际的类而不是字符串,这可能会导致一些问题。一般来说,我建议在处理记录类型时使用
'MyApp.Space'
,因为这些记录类型将在运行时进行评估和查找。如果由于某种原因找不到它,它会抛出一个稍微好一点的消息


希望这有帮助

在发布问题后,我发现了一个问题,我有一个冲突的类名。但是现在我遇到了下一个问题,我得到了错误:
uncaughttypeerror:无法调用未定义的javascript.js?1377681200:13225 SC.RecordArray.SC.Object.extend.storeDidChangeStoreKeys javascript.js?1377681200:13225(匿名函数)的方法“get”javascript.js?1377681200:10205 SC.Set.SC.mixin.forEach javascript.js?1377681203:8171 SC.Store.SC.Object.extend.\u notifyRecordArrays javascript.js?1377681200:10204 SC.Store.SC.Object.extend.flush
您能使用gist.github.com创建一个失败的完整代码示例吗?感谢提供更多帮助!我刚刚解决了这个问题,这与Sproutcore无关,我忘记在方法“store.DataSourcedDetectQuery(query)”的回调函数中设置参数“query”。现在正在运行:)非常感谢,事实上我有另一个名为Myapp.Space的视图,所以这个问题得到了解决。(仍在努力解决下一个错误,…)