【问题标题】:Disable view caching in if.bind?在 if.bind 中禁用视图缓存?
【发布时间】:2017-04-28 20:13:50
【问题描述】:

if.bind 中的 <object> 标记遇到了一个奇怪的问题。从本质上讲,似乎 if 绑定内部的视图片段正在被缓存。我用我在 Gist.run 上的发现创建了一个 Gist,在这里:

https://gist.run/?id=e25a4e4ca1de59ba8baff20c3a4304c2

对象标签似乎不会在 if 绑定中重新呈现。这意味着如果已插入回退内容,则在 if 绑定更改时不会刷新对象内容。

  1. 使用数字输入更改下图的大小。如果将数字更改为零,则图像将无效并会出现后备内容。
  2. 重新添加号码。内容不刷新。这是known bug
  3. 但是,通过 if.bind 切换内容不会重置对象本身(尽管应该重新绑定数据)。视图是否已缓存?

我不完全确定是什么导致了这个问题,但我相信这可能是由于 Aurelia 的缓存。我相信 Aurelia 不会在每次 if 绑定重新出现时重建视图(尽管它正在重新运行绑定)。这意味着<object> 无效并显示回退内容。如果是这种情况,有没有办法禁用 if 绑定的缓存 - 也许通过绑定行为?

【问题讨论】:

  • 哇,这太旧了。我也可以完美重现。

标签: javascript aurelia


【解决方案1】:

我怀疑问题实际上可能出在您正在使用的 aurelia-bundle 中,而不是在 aurelia 核心中。您的 gist.run 显然很好地说明了这个问题。我怀疑这一点的唯一原因是我只是尝试使用 aurelia-cli 重现该错误并将 -bootstrapper 和 -tools 更新为最新版本。只需直接从 gist.run 复制您的 app.html 和 app.js。在 aurelia-cli 中无法重现您在 gist.run 中观察到的相同错误。不过也有其他差异:) 例如,不会出现板支架文本,而是在滚动 div 中看到 placehold.it 页面。很奇怪。无论如何,我希望这个答案能帮助你弄清楚!这是我测试过的模块版本。

$ npm list | grep aurelia
├─┬ aurelia-animator-css@1.0.1
│ ├── aurelia-metadata@1.0.2
│ ├── aurelia-pal@1.1.1
│ └─┬ aurelia-templating@1.1.4
│   ├── aurelia-binding@1.1.0
│   ├── aurelia-loader@1.0.0
│   ├── aurelia-path@1.1.1
│   └── aurelia-task-queue@1.1.0
├─┬ aurelia-bootstrapper@2.0.0
│ ├── aurelia-event-aggregator@1.0.1
│ ├── aurelia-framework@1.0.8
│ ├── aurelia-history@1.0.0
│ ├── aurelia-history-browser@1.0.0
│ ├── aurelia-loader-default@1.0.0
│ ├── aurelia-logging-console@1.0.0
│ ├── aurelia-pal-browser@1.1.0
│ ├── aurelia-polyfills@1.1.1
│ ├─┬ aurelia-router@1.1.0
│ │ └── aurelia-route-recognizer@1.1.0
│ ├── aurelia-templating-binding@1.1.0
│ ├── aurelia-templating-resources@1.2.0
│ └── aurelia-templating-router@1.0.1
├─┬ aurelia-cli@0.23.0
│ ├── aurelia-dependency-injection@1.2.0
├─┬ aurelia-testing@1.0.0-beta.2.0.1
│ └── aurelia-logging@1.2.0
├─┬ aurelia-tools@1.0.0

【讨论】:

  • 好电话。我更新了我的部门,但我仍然看到同样的事情。奇怪的是,您看到的是网站本身而不是后备内容,我认为这不应该发生。尝试输入一个明显无效的图像 URL,您应该会看到我所看到的行为。
  • 是的,如果我将数据属性编辑为始终为无效 URL,那么我总是会看到占位符文本,但不会看到其他任何内容。在 aurelia-cli 上下文中,仍然无法在 OS X 上使用 Chrome55 进行复制。但我也没有看到第 2 步错误,即您引用的已知问题。从某种意义上说,您的错误取决于该错误。这是一个奇怪的,你是对的!
  • 我也在当地确认了你的行为。我认为这可能与从 localhost 运行而不是从服务器运行有关。无论如何,主要问题是,如果由于任何原因(无效的 URL、不良负载等)显示后备内容,通过 if 绑定删除和重新绑定似乎实际上并没有在 DOM 中重新创建该元素。跨度>
  • 如果您使用“0”作为大小值,您应该会收到作为占位符的后备内容。它会返回 301 Moved Permanently 响应。在本地运行时在对象标签中加载主页是一个不同的问题。
  • 啊哈确定,现在可以重现问题了。那好吧!如果这里没有任何结果,可能也值得在gitter.im/aurelia/Discuss 上提问。
猜你喜欢
  • 2012-10-15
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 2014-11-06
  • 2012-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多