0

你好互联网的好人;)

新工作,新语言。我需要在 Jupiter 笔记本中修改 Ipyvuetify Vue 代码以使用静态道具。

我能够将简单的 vue 示例放在一起
,我可以在 vue 文件中以声明性方式通过分配的静态文本设置子组件的属性。它在 js 变体中工作得很好。https://jsfiddle.net/wu9bxL1n/1/

但是同样的方法在 ipyvuetify 语法中似乎根本不起作用。没有错误没有什么。分配给子道具的静态字符串只是被默默地忽略,我似乎无法在文档中找到任何原因。我错过了什么?

这是 ipyvuetify 语法复制/粘贴到 Jupiter 笔记本中的最小可能代码。

import ipyvuetify as v
import traitlets
​
class AA(v.VuetifyTemplate):
    template = traitlets.Unicode('''
    <template>
        <v-card-title>{{label}}</v-card-title>
    </template>
    <script> export default { name: "aa", props: ['label'] } </script>''').tag(sync=True)
    
    label = traitlets.Unicode('But this is showing default text instead').tag(sync=True)
​
class BB(v.VuetifyTemplate):
    template = traitlets.Unicode('''
    <template>
    <div>
      <v-text-field label="This text was set statically" ></v-text-field>
      <aa           label="This text was set statically"></aa>
    </div>
    </template>''').tag(sync=True)
   
    components = traitlets.Dict(default_value={'aa': AA()}).tag(sync=True, **v.VuetifyTemplate.class_component_serialization)
​
BB()

​---

Output:

This text was set statically
But this is showing default text instead
4

1 回答 1

0

哦,男孩。

答案是在某些 3rd 方 lib 源代码中看到的一些未记录的行为。

我们需要使用

default_value={'aa': AA }

代替

default_value={'aa': AA()}

然后将静态道具设置为您自己的组件将起作用。我知道很奇怪。

希望解决某些问题的人会发现这一点。保重伙计们;)

于 2021-12-10T11:07:56.540 回答