Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dialog组件setValue page之后,dialog弹窗读取不到最新值 #11441

Open
thinkingc opened this issue Dec 31, 2024 · 3 comments
Open

dialog组件setValue page之后,dialog弹窗读取不到最新值 #11441

thinkingc opened this issue Dec 31, 2024 · 3 comments

Comments

@thinkingc
Copy link
Contributor

描述问题:

dialog组件setValue page之后,dialog弹窗读取不到最新值

截图或视频:

image

如何复现(请务必完整填写下面内容):

  1. 你是如何使用 amis 的?
    npm

  2. amis 版本是什么?请先在最新 beta 版本测试问题是否存在
    最新

  3. 粘贴有问题的完整 amis schema 代码:

{
  "type": "page",
  "id": "pg",
  "data": {
    "b": "initB"
  },
  "body": [
    "${a}",
    "${b}",
    {
      "type": "button",
      "label": "dialog",
      "actionType": "dialog",
      "dialog": {
        "title": "数据域不更新",
        "canAccessSuperData": true,
        "trackExpression": "${b}",
        "data": {
          "&": "$$"
        },
        "body": [
          "${a}",
          "${b}",
          {
            "type": "button",
            "label": "setA",
            "onEvent": {
              "click": {
                "actions": [
                  {
                    "actionType": "setValue",
                    "componentId": "pg",
                    "args": {
                      "value": {
                        "a": "aaaa"
                      }
                    }
                  }
                ]
              }
            }
          },
          {
            "type": "button",
            "label": "setB",
            "onEvent": {
              "click": {
                "actions": [
                  {
                    "actionType": "setValue",
                    "componentId": "pg",
                    "args": {
                      "value": {
                        "b": "bbbb"
                      }
                    }
                  }
                ]
              }
            }
          }
        ]
      }
    }
  ]
}
  1. 操作步骤
    点开弹窗,然后触发setB按钮。page层的b可以读取最新值,但dialog中无法拿到最新值。关闭弹窗再次进来就能拿到最新值了。
@lhtuling
Copy link

lhtuling commented Jan 2, 2025

弹窗应该是每次打开从数据域里面获取数据后 自己独立出来了!
直接给弹窗也重新赋值一下不就行了,达到一样的效果!
或者更换下思路不要这样用

Amis低代码前端框架交流群【QQ1群】:717791727
Amis低代码前端框架交流群【QQ2群】:721182449

@thinkingc
Copy link
Contributor Author

弹窗应该是每次打开从数据域里面获取数据后 自己独立出来了! 直接给弹窗也重新赋值一下不就行了,达到一样的效果! 或者更换下思路不要这样用

Amis低代码前端框架交流群【QQ1群】:717791727 Amis低代码前端框架交流群【QQ2群】:721182449

看了内部实现,确实是每次openDialog时赋值的,这种数据域更新的逻辑和其他组件的更新逻辑(每次渲染时更新)不一样。很容易拿不到最新的数据,这个有计划修复吗?虽然可以赋值时重新给弹窗赋值一遍,比较繁琐。

@lhtuling
Copy link

弹窗应该是每次打开从数据域里面获取数据后 自己独立出来了! 直接给弹窗也重新赋值一下不就行了,达到一样的效果! 或者更换下思路不要这样用
Amis低代码前端框架交流群【QQ1群】:717791727 Amis低代码前端框架交流群【QQ2群】:721182449

看了内部实现,确实是每次openDialog时赋值的,这种数据域更新的逻辑和其他组件的更新逻辑(每次渲染时更新)不一样。很容易拿不到最新的数据,这个有计划修复吗?虽然可以赋值时重新给弹窗赋值一遍,比较繁琐。

我不是官方的人。。。修复不修复不知道,但是我知道就算修复大概率也要很久,所以自己在现有基础上想办法实现为好,不能等官方修复。。。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants