fix subcomponent unloading
This commit is contained in:
parent
bdbe0b8a21
commit
e846335f16
1 changed files with 13 additions and 8 deletions
21
mithril.js
21
mithril.js
|
|
@ -729,15 +729,19 @@ void (function (global, factory) { // eslint-disable-line
|
||||||
var unloaders = []
|
var unloaders = []
|
||||||
|
|
||||||
function updateLists(views, controllers, view, controller) {
|
function updateLists(views, controllers, view, controller) {
|
||||||
if (controller.onunload != null) {
|
|
||||||
unloaders.push({
|
|
||||||
controller: controller,
|
|
||||||
handler: controller.onunload
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
views.push(view)
|
views.push(view)
|
||||||
controllers.push(controller)
|
var idx = controllers.push(controller) - 1
|
||||||
|
unloaders[idx] = {
|
||||||
|
controller: controller,
|
||||||
|
handler: function () {
|
||||||
|
controllers.splice(controllers.indexOf(controller), 1)
|
||||||
|
views.splice(views.indexOf(view), 1)
|
||||||
|
var unload = controller && controller.onunload
|
||||||
|
if (type.call(unload) === "[object Function]") {
|
||||||
|
controller.onunload()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var forcing = false
|
var forcing = false
|
||||||
|
|
@ -1300,6 +1304,7 @@ void (function (global, factory) { // eslint-disable-line
|
||||||
}
|
}
|
||||||
|
|
||||||
forEach(unloaders, function (unloader) {
|
forEach(unloaders, function (unloader) {
|
||||||
|
if (unloader.controller == null) return
|
||||||
unloader.handler.call(unloader.controller, ev)
|
unloader.handler.call(unloader.controller, ev)
|
||||||
unloader.controller.onunload = null
|
unloader.controller.onunload = null
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue