我似乎无法author_view
在我创建的 Xblock 中执行。
也许我误解了它的意图author_view
是什么,或者我期望它做什么。据我了解,一旦您将 Xblock 添加到 Vertical(例如,当您可以重新排序 Xblock 或单击其编辑按钮时显示在 Xblock 内的内容),它就是在工作室中显示的视图。
我进行了大量搜索和文档阅读,但找不到任何使用author_view
. 但是这样的陈述:
用于在 Studio 中为教师预览此 XBlock 的视图。
student_view
如果未定义 author_view,则默认为。
让我觉得这就是我要找的。
在我的情况下,Xblock 在学生视图中执行一些 javascript 工作,因此没有内容可以显示给学生。在 Studio 视图中,我希望它显示可编辑参数而不执行任何 javascript。
我的 xblock python 文件的相关部分是:
class MyXblock(Xblock):
def resource_string(self, path):
data = pkg_resources.resource_string(__name__, path)
return data.decode("utf8")
def student_view(self, context=None):
data = { # some context data }
# student_view.html contains an empty tag - nothing to display
html = self.resource_string("static/html/student_view.html")
frag = Fragment(html.format(self=self))
frag.add_css(self.resource_string("static/css/style.css"))
frag.add_javascript(self.resource_string("static/js/src/student.js"))
frag.initialize_js('MyXblock', data)
return frag
def author_view(self, context=None):
# author_view.html contains html to display current xblock parameter values
html = self.resource_string("static/html/author_view.html")
frag = Fragment(html.format(self=self))
frag.add_css(self.resource_string("static/css/style.css"))
return frag
def studio_view(self, context=None):
html = self.resource_string("static/html/studio_view_edit.html")
frag = Fragment(html.format(self=self))
frag.add_css(self.resource_string("static/css/style.css"))
frag.add_javascript(self.resource_string("static/js/src/studio_edit.js"))
frag.initialize_js('MyXblock')
return frag
我尝试将日志语句添加到学生/作者视图中,但唯一被调用的是student_view
.
我最终对此有一个解决方案,其中涉及检查LMS_ROOT_URL
并将其与window.location
javascript 中的只是做我想做的事。myxblock_xblock
author_view
任何见解将不胜感激!谢谢!