我有一個ember-cli項目,我正在嘗試使用ember 2.0。我知道這個想法是在升級前刪除所有棄用警告,但我不知道該怎麼做這一個:無法升級到Ember/Ember-Data 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不是很熟悉,而且我可能會做錯某些事情。
- 變化餘燼和灰燼,數據
"~2.0.0"
任何地方發生的package.json
和ember.json
npm uninstall ember-data
bower uninstall ember-data
bower uninstall ember
npm cache clear
bower cache clear
npm install
bower install
在這一點上,告訴我,我已經安裝了[email protected]
和[email protected]
我然後運行該應用程序,並發現以下錯誤:
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 [email protected]:toplevel: Object
請注意:此錯誤與棄用似乎沒有關係,在我收到的任何棄用說明中都沒有提到。
[DEPRECATION的可能重複:在Ember Data 2.0中,shouldReloadAll的默認行爲將在至少有一個時始終更改爲false(http://stackoverflow.com/questions/31016676/deprecation-the-default- behavior-of-shouldreloadall-will-change-in-ember-data-2) – nem035
你剛剛做了什麼嗎?只需重寫應用程序適配器中的'shouldReloadAll()'方法(這將擴展Django適配器),並使其返回true。改變的原因是,結果被緩存,並且可以使用'this.store.findAll('foo',{reload:true})'顯式重載。 – uberclops
@uberclops我想我不明白該怎麼做。我沒有想到我有一個_application adapter_。你能否向我解釋我將如何重寫該方法? –