所以我有一个海滨应用程序。第一个组件只是渲染子组件:
MCRootComponent>>initialize
super initialize.
self main: MCMainComponent new.
MCRootComponent>>renderComponentOn:html
renderContentOn: html
html render: main 现在,正在渲染的子组件如下所示:
MCMainComponent>>renderContentOn: html
html tbsForm:[
html tbsContainerFluid: [
html anchor
callback: [ self call: (MCServiceOrderComponent from: MCServiceOrder new)];
with: 'New Service Order' ]]和MCServiceOrderComponent:
MCServiceOrderComponent>>initialize
super initialize.
customerComponent := MCClienteComponent new.
vehicleComponent := MCVehicleComponent new.
vehicleComponent lookupCallback: [
self show:(MCVehicleLookupComponent new) onAnswer:[:vehicle|
vehicle ifNotNil: [
serviceOrder vehicle: vehicle.
vehicleComponent objectToRender: vehicle.
customerComponent objectToRender: vehicle customer ]]]
MCServiceOrderComponent>>renderContentOn: html
html heading level1 with: 'ServiceOrder'.
html tbsForm with: [
html render: vehicleComponent.
html render: customerComponent.
]到目前为止,这一切都很好。请注意,查找回调被传递给MCVehicleComponent。此块被传递给在MCVehicleComponent中呈现的按钮上的回调。
MCVehicleComponent>>renderContentOn: html
self renderContainer: 'Vehicle' on: html with: [
self renderSearchFor: #id on: html with: self lookupCallback.
self renderInputFor: #maker on: html.
self renderInputFor: #model on: html.
self renderInputFor: #color on: html ]
MCVehicleComponent>>renderSearchFor: aSymbol on: html with: aBlock
html tbsFormGroup: [
html label: aSymbol asCapitalizedPhrase.
html tbsInputGroup: [
html textInput tbsFormControl on: aSymbol of: self objectToRender.
html tbsInputGroupButton: [
html tbsButton callback: aBlock;
with: [ html tbsGlyphIcon iconSearch ] ] ]]它应该# MCVehicleLookupComponent : to a call并返回结果。然而,实际情况是,一旦调用#call:,页面内容就会变成空白。我尝试过直接从MCMainComponent调用MCVehicleLookupComponent,它工作得很好,所以我知道问题不在这里。你知道是什么导致了这种行为吗?
我是smalltalk的新手,所以请耐心面对愚蠢的问题和可怕的代码(这是我的第一个应用程序。欢迎任何建议)。
发布于 2017-02-02 23:13:06
事实证明我调用了错误的组件。每件事都像是一种魔力。抱歉的。
https://stackoverflow.com/questions/41947994
复制相似问题