원래 wagtail 문제 대기열에이 질문을했는데 잘못된 곳이라고 생각합니다. (비록 이것이 이것이 documentation의 버그라고 생각 하긴하지만)Wagtail : 하위 블록의 js_initializers도 실행되도록 맞춤 블록의 js_initializer를 어떻게 정의합니까?
어쨌든 내 문제는 내 안에 ListBlock
을 사용하는 사용자 정의 StructBlock
클래스가 있다는 것입니다. 양식이 내 이니셜 라이저 및ListBlock
의 이니셜 라이저를 모두 트리거하도록하는 사용자 정의 클래스에 js_initializer()
메소드를 정의해야합니다.
# my_blocks.py
class ImageGalleryBlock(blocks.StructBlock):
images = ListBlock(ImageChooserBlock(label='Image'))
def js_initializer(self):
return "ImageGallery"
@property
def media(self):
return forms.Media(
js=['app/js/admin/image-gallery.js']
)
# image-gallery.js
function ImageGallery(prefix) {
// Set up the Image Gallery block's custom form behavior...
}
는 이쪽 ImageGallery()
기능을 실행할 수 있도록하지만, ListBlock
의 초기화를 실행하지 않았기 때문에 그 버튼의 아무도 일하지 다음 docs에 따라
내 최초의 시도는이처럼 보였다. '
def js_initializer(self):
initializer_js = super(HeadingBlock, self).js_initializer()
my_custom_js = 'ImageGallery("%s")' % self.definition_prefix
if initializer_js:
# child blocks have custom JS initializers and need to be used
return '%s,\n%s' % (initializer_js, my_custom_js)
return my_custom_js
# image-gallery.js
function ImageGallery(prefix) {
var init_image_gallery = function(element_prefix) {
// Do stuff...
};
return init_image_gallery;
}
내가 함수에 ImageGallery()
부분을 얻기 위해 원래의 제안에 대한 몇 가지 개선했습니다,하지만 여전히 아무튼 다음 할미새 문제 큐에
ListBlock
초기화 프로그램을 실행하십시오. 천국을 내가 실제로 DICT에 다른 키를 추가하기 만하면 무엇을
StructBlock
로 전달되는 것을 느낌을 얻을
{
'name': ('ImageGalleryBlock'),
'initializer': (StructBlock({
'images': (ListBlock({
'definitionPrefix': ('blockdef-63')
}))
}),
ImageGallery("blockdef-91"))
},
하지만, I : 여기
는ImageGalleryBlock
에 대해 생성됩니다 이니셜 코드가 어떻게 생겼는지입니다 어떻게하면 가장 끔찍한 단서가 생겼어.
은 [최소한의 완전하고 검증 가능한 코드 예제]를 포함하십시오 (https : //로 스택 오버플로.com/help/mcve) - StructBlock과 ListBlock이 어디에 있는지 알기 위해 ImageGalleryBlock을 충분히 공유하지 않았습니다. – gasman
@gasman 아, 내 'ImageGalleryBlock' 정의가 조금 엉망이되었습니다. 너무 멀리 말하면, 당신은 말할지도 모른다. 지금 당장해야합니다. – CoreDumpError