【发布时间】:2016-01-07 03:28:33
【问题描述】:
我有一个 ember-cli 项目,我正在尝试使用 ember 2.0。我知道这个想法是在升级之前删除所有弃用警告,但我不知道如何处理这个:
DEPRECATION: The default behavior of shouldReloadAll will change in Ember Data 2.0
to always return false when there is at least one "foo" record in the store.
If you would like to preserve the current behavior please override shouldReloadAll
in your adapter:application and return true.
[deprecation id: ds.adapter.should-reload-all-default-behavior]
例如,此警告与我为this.store.findAll('foo') 拨打的电话有关。
据我所知,解决此问题将涉及更改 ember-data 或 ember-django-adapter 的行为。
这是我的(部分)package.json:
{
"name": "my-app",
"private": true,
"devDependencies": {
"ember-cli": "1.13.13",
"ember-data": "1.13.15",
"ember-django-adapter": "^1.1.1",
}
}
这是我的一些bower.json:
{
"name": "my-app",
"dependencies": {
"ember": "1.13.11",
"ember-data": "1.13.15",
"ember-resolver": "~0.1.20",
}
}
所以,读了一点之后,我想也许我可以忽略这个警告,也许shouldReloadAll 的行为对我的应用来说并不是那么重要。
我会仔细列出我的步骤,因为我对 npm 或 bower 不是很熟悉,而且我可能做错了什么。
- 将 ember 和 ember-data 更改为
"~2.0.0",无论它们出现在package.json和ember.json npm uninstall ember-databower uninstall ember-databower uninstall embernpm cache clearbower cache clearnpm installbower install
此时它告诉我已经安装了ember-data@2.0.1 和ember@2.0.2
然后我运行应用程序,发现如下错误:
TypeError: str.replace is not a function
at Object.func (ember.debug.js:35278)
at Object.Cache.get (ember.debug.js:12867)
at decamelize (ember.debug.js:35320)
at Object.func (ember.debug.js:35235)
at Object.Cache.get (ember.debug.js:12867)
at Object.dasherize (ember.debug.js:35324)
at ember$data$lib$system$normalize$model$name$$normalizeModelName (normalize-model-name.js:13)
at ember$data$lib$serializers$json$serializer$$default.extend.modelNameFromPayloadKey (rest-serializer.js:426)
at ember$data$lib$serializers$json$serializer$$default.extend._normalizePolymorphicRecord (rest-serializer.js:161)
at rest-serializer.js:141onerrorDefault @ ember.debug.js:29661exports.default.trigger @ ember.debug.js:51067(anonymous function) @ ember.debug.js:52059Queue.invoke @ ember.debug.js:978Queue.flush @ ember.debug.js:1042DeferredActionQueues.flush @ ember.debug.js:838Backburner.end @ ember.debug.js:166Backburner.run @ ember.debug.js:288run @ ember.debug.js:19125hash.success @ rest-adapter.js:735fire @ jquery.js:3148self.fireWith @ jquery.js:3260done @ jquery.js:9314callback @ jquery.js:9718
报告了以下版本:
DEBUG: -------------------------------
vendor.js:15777 DEBUG: Ember : 2.0.2
vendor.js:15777 DEBUG: Ember Data : 2.0.1
vendor.js:15777 DEBUG: jQuery : 1.11.3
vendor.js:15777 DEBUG: -------------------------------
vendor.js:19380 Rendering application with bracketfun-web@view:toplevel: Object
请注意:在我收到的对弃用的任何解释中,此错误似乎与弃用无关。
【问题讨论】:
-
您是否尝试按照它所说的去做?只需覆盖应用程序适配器中的
shouldReloadAll()方法(这将扩展 Django 适配器)并使其返回 true。更改的原因是结果被缓存,并且可以使用this.store.findAll('foo', { reload: true })显式重新加载。 -
@uberclops 我想我不明白该怎么做。我认为我没有应用程序适配器。您能否向我解释一下我将如何覆盖该方法?
-
@uberclops 我现在已经尝试显式重新加载,但仍然得到同样的错误。
标签: ember.js ember-data ember-cli