Fix bug with first render #70

Merged
thesabinelim merged 1 commits from script-behaviour into master 2023-05-13 17:38:40 +08:00

View File

@@ -144,9 +144,10 @@ function XmlParser:ParseXmlText(xmlText)
return top return top
end end
local function maybeExecuteScript(renderContext) local function maybeExecuteScript(data, renderContext)
if (renderContext.script ~= nil) then local script = xmlValue('script', data)
load(renderContext.script, nil, "t", renderContext.env)() if (script ~= nil) then
load(script, nil, "t", renderContext.env)()
end end
end end
@@ -210,6 +211,7 @@ return {
if (tableName == "props") then if (tableName == "props") then
self:updateValue(k, renderContext.env.props[entryName]) self:updateValue(k, renderContext.env.props[entryName])
elseif (tableName == "shared") then elseif (tableName == "shared") then
self:updateValue(k, renderContext.env.shared[entryName])
local sharedObservers = renderContext.sharedObservers local sharedObservers = renderContext.sharedObservers
if (sharedObservers[entryName]) == nil then if (sharedObservers[entryName]) == nil then
sharedObservers[entryName] = {} sharedObservers[entryName] = {}
@@ -232,11 +234,6 @@ return {
"foreground" "foreground"
}) })
if(xmlValue("script", data)~=nil)then
renderContext.script = xmlValue("script", data)
end
local events = {"onClick", "onClickUp", "onHover", "onScroll", "onDrag", "onKey", "onKeyUp", "onRelease", "onChar", "onGetFocus", "onLoseFocus", "onResize", "onReposition", "onEvent", "onLeave"} local events = {"onClick", "onClickUp", "onHover", "onScroll", "onDrag", "onKey", "onKeyUp", "onRelease", "onChar", "onGetFocus", "onLoseFocus", "onResize", "onReposition", "onEvent", "onLeave"}
for _,v in pairs(events)do for _,v in pairs(events)do
if(xmlValue(v, data)~=nil)then if(xmlValue(v, data)~=nil)then
@@ -361,7 +358,7 @@ return {
local data = XmlParser:ParseXmlText(f.readAll()) local data = XmlParser:ParseXmlText(f.readAll())
f.close() f.close()
lastXMLReferences = {} lastXMLReferences = {}
maybeExecuteScript(renderContext) maybeExecuteScript(data, renderContext)
self:setValuesByXMLData(data, renderContext) self:setValuesByXMLData(data, renderContext)
end end
return self return self
@@ -461,7 +458,7 @@ return {
local data = XmlParser:ParseXmlText(f.readAll()) local data = XmlParser:ParseXmlText(f.readAll())
f.close() f.close()
lastXMLReferences = {} lastXMLReferences = {}
maybeExecuteScript(renderContext) maybeExecuteScript(data, renderContext)
self:setValuesByXMLData(data, renderContext) self:setValuesByXMLData(data, renderContext)
end end
return self return self