【问题标题】:AngularJS serving up *partially* old code on localhostAngularJS 在本地主机上提供*部分*旧代码
【发布时间】:2016-09-21 15:39:30
【问题描述】:

所以这很奇怪...我的控制器中有一个 $scope 变量分配给一个字符串。

我已经更改了那个字符串。

它正在提供早已不复存在的原始字符串。

我知道,我知道:清除浏览器缓存。做过某事。它还在那里。我尝试了 Firefox 和 Safari。你知道吗?我没有安装 Opera,所以我下载并安装了 Opera,旧字符串甚至出现在 Opera 中,我的电脑——运行最新版本 OSX El Capitan 的 2015 MacBook Pro。

我知道,我知道:刷新 Apache 缓存,即使它在 Mac 上被禁用并且我从未启用它。美好的。我在代码中的目录上运行了 htcacheclean -r -p,我仍然得到旧代码。

我知道,我知道:确保您没有意外指向错误的目录。嗯....问题是,整个驱动器上只有 一份此代码。另外,即使新的 $scope 变量源代码更改被忽略,我也可以对完全相同的文件中的函数进行更改,但它绝对尊重 这些 更改。

为了记录,这里的代码没有改变:

$scope.credits = '<div class="credits" id="show_cred">';
$scope.credits += '<marquee behavior="scroll" direction="up">';

当我加载页面时,它显示字符串是:

<div class="credits">

就是这样。没有身份证。没有“选框”。 (是的,我在字符串后面确实有相应的结束标签,它们确实被渲染了......嗯,除了结束的“marquee”标签,因为,嗯,这是一个它拒绝承认的新行。)我去了至于将整个 $scope.credits 变量更改为以下内容:

$scope.credits = '';

....但旧变量仍然呈现。

我尝试将这两行合并为一行,但不行。

在同一个控制器文件中——同样是同一个文件——它实际上确实反映了我对函数所做的修改,而不是变量。

这是我作为网络开发人员这些年来见过的最奇怪的情况。这绝对不是基于浏览器的。这绝对不是 Apache 的缓存(除非我被骗了并且它在 Mac 上启用并且 htcacheclean 命令是安慰剂)。

你们怎么看这个?

【问题讨论】:

  • 我遇到了完全相同的问题,但没有找到任何解决方案。我也尝试过清除缓存、重启、重启系统、重启浏览器、安装其他浏览器等等。我认为唯一的“解决方案”是摆脱 AngularJS,并尝试切换到另一个框架,例如 Ember.js、Backbone.js 或 React。
  • 您确定您引用了 $scope.credits 的内容并且 HTML 不是从其他地方设置的吗?如果您可以共享显示问题的视图和控制器代码,其他人可能更容易帮助找到问题?

标签: angularjs variables scope osx-elcapitan


【解决方案1】:

嗯,我确实想出了一个解决方案,这是我应该从一开始就做的事情。

我没有将大量 HTML 分配给范围变量,而是将其放入视图本身并将其附加到 ng-if 指令。这解决了我的问题,因为该网站现在可以按照我的意图进行操作。

但是,它实际上并没有回答这个问题,即变量的旧值究竟是如何一成不变的。

【讨论】:

    猜你喜欢
    • 2014-01-26
    • 1970-01-01
    • 2017-10-09
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多