【问题标题】:dojo dynamic resizing of widgetsdojo 小部件的动态调整大小
【发布时间】:2014-06-11 11:06:17
【问题描述】:

我是一名 dojo 初学者,并且有一个使用 dojo 1.3.2 的“巨大”项目(无法升级到更新版本)。我正在尽可能地使用这个旧版本的文档并且我正在取得进展,但是在道场迷宫中仍然存在我不知道或我不完全理解的角落。我希望我的问题不会重复,因为我还没有找到问题的答案。

在项目中是一个可见或隐藏的小部件。在某些用户操作中,小部件应动态调整大小。我通过使用dojo.query(访问正确的dom节点)和dojo.style(进行实际调整大小)实现了一个逻辑,到目前为止效果很好。

只有一个问题:如果小部件第一次显示它具有默认大小(来自 html),尽管该函数是通过小部件的 onShown-function 调用的。我的调整大小逻辑只会在发生导致调整大小的用户操作或下次显示小部件时影响小部件。

有什么我应该研究的地方可能会导致这种行为吗?我将不胜感激每一个提示,因为我无法判断项目中是否存在导致这种行为的依赖项。无论如何,这对我来说似乎与 dojo 和它的逻辑有关,因为尝试第二次调用 ect 没有帮助。

谢谢!

【问题讨论】:

  • 给这个问题一个结尾,而不是真正地回答旧的问题:今年我们终于可以将 dojo 版本升级到 1.10 并且我已经运行良好的代码并做了我想做的事预期的。所以这似乎是旧版本特有的问题。假设现在大多数开发人员不会对此感兴趣。

标签: javascript dojo widget


【解决方案1】:

我建议您阅读 dijit 生命周期:

O'Reilly 的权威指南确实过时了,但这对 1.3.2 来说实际上是件好事: http://chimera.labs.oreilly.com/books/1234000001819/ch12.html#the_widget_lifecycle

我能找到的最近的 Dojo 文档适用于 1.6,但基本上应该适用: http://dojotoolkit.org/reference-guide/1.6/dijit/_Widget.html

你想看看 startup() - 这很重要,因为 startup() 是第一个生命周期方法,小部件应该被放置在 DOM 中。

【讨论】:

  • 这对我来说是有用的信息,但不幸的是这并不能解决问题。为了调整大小,我需要一个特定的 domNode,它没有在放置代码的实例中直接引用。我用dojo.query 得到了这个domNode,这一切都很好。根据您关于 startup() 的提示,我将搜索代码移到了这个地方,因为它只会执行一次(我之前在 onShow 中这样做过)并且找到了节点。在这个方法中调用我的 resize() 似乎并没有改变已经描述的行为。调整大小仍然会在下一个节目或用户操作时发生。有什么想法吗?
猜你喜欢
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多