1

我似乎无法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.locationjavascript 中的只是做我想做的事。myxblock_xblockauthor_view

任何见解将不胜感激!谢谢!

4

1 回答 1

1

在遇到与author_viewxblock 相同的问题后,我在这个 google groups 线程中找到了解决方案

您只需has_author_view = True向您的 xblock 添加一个变量,edX Studio 就会使用您的author_view. 这似乎是一种解决方法,我还没有找到任何其他对此变量的引用。

于 2018-05-28T09:42:46.687 回答