当前位置: 首页 > 面试题库 >

使用ui-router禁用AngularJS中的模板缓存

谢涵亮
2023-03-14
问题内容

我注意到,我会不时地对AngularJS应用程序中的模板之一进行更改,并且在运行时该更改将不可见。相反,我将不得不刷新应用程序,如果失败,请转到模板本身的路径并刷新它,以查看此更改。

防止像这样缓存这些模板的最佳方法是什么?理想情况下,我希望在当前使用Angular应用程序的过程中将它们缓存,但是下次我加载页面时,它们将检索最新和最出色的模板,而无需手动刷新。

我在使用ui-router,如果这有什么区别。谢谢!


问题答案:

您可以使用装饰器并更新UI路由器的$ templateFactory服务以将后缀附加到templateUrl

function configureTemplateFactory($provide) {
    // Set a suffix outside the decorator function 
    var cacheBuster = Date.now().toString();

    function templateFactoryDecorator($delegate) {
        var fromUrl = angular.bind($delegate, $delegate.fromUrl);
        $delegate.fromUrl = function (url, params) {
            if (url !== null && angular.isDefined(url) && angular.isString(url)) {
                url += (url.indexOf("?") === -1 ? "?" : "&");
                url += "v=" + cacheBuster;
            }

            return fromUrl(url, params);
        };

        return $delegate;
    }

    $provide.decorator('$templateFactory', ['$delegate', templateFactoryDecorator]);
}

app.config(['$provide', configureTemplateFactory]);


 类似资料:
  • 问题内容: 我知道它已经被讨论过很多次了,大多数文章都引用了以下代码:AngularJS中带有自定义URL的模态窗口 但是我就是不明白。我根本看不出来。我还发现这个jsfiddle实际上很棒,非常有帮助,除了它不添加url并允许我使用后退按钮关闭模式。 编辑:这是我需要帮助。 因此,让我尝试解释我要实现的目标。 我有一个添加新项目的表格,并且有一个“添加新项目”链接。我想当我单击“添加新项目”时,

  • 我有一个Spring Boot应用程序,它公开了一个用于呈现相对简单的velocity模板的API。模板使用来包含几个其他模板,否则会写出从Java层传递给它的一些基本变量。模板位于JAR文件中,因此它们是从类路径加载的。我使用以下每个请求动态创建的velocity engine设置: 模板的多个部分对于每个请求来说是唯一的(资源用作对简单的Spring MVC控制器的响应),所以我需要禁用模板资

  • 问题内容: 码 我在侧面菜单中有两页(和)。每个页面都有2个标签: :和 :和 我正在使用每个页面包含2个选项卡。 这是一个非常简单的设计:我想单击或转到适当的路线。但是由于某种原因,状态已正确更改(请参阅控制台),但实际的html模板未更新。 您能找出问题所在以及如何解决吗? 似乎存在一些缓存问题或其他问题。 HTML JS 问题答案: 您当前指的是最新版本,该版本在从一种状态转换为另一种状态时

  • 问题内容: 我正在使用ui-router 0.2.8。我想根据设备宽度加载模板。我可以毫无问题地获得设备的宽度,将其设置在范围等,但我可以弄清楚如何将其绑定到$ stateParams。我在另一个控制器中有scope变量,可以访问该状态的控制器,但状态本身不可用。我试过了templateProvider,但这只是返回一个字符串。为了使它起作用,我还能尝试什么? 问题答案: 您可以在事件中访问状态参

  • 本文向大家介绍详解angularjs 关于ui-router分层使用,包括了详解angularjs 关于ui-router分层使用的使用技巧和注意事项,需要的朋友参考一下 最近感觉有很多学angular 的童鞋在路由问题中还不清楚怎么使用。其实我之前也是一直晕晕的不懂怎么用,现在要好得多了。在这里就记录下ui-router使用。 就已目前做的这个项目来介绍下怎么使用吧。Note:最好是按照层次规则

  • 问题内容: 我想加载一个内联视图模板。 我将模板包装在类型为的脚本标签中,并将ID设置为。这是我的模块配置 它在控制台窗口中告诉我,这意味着它正在寻找该名称的文件。 我的问题是:如何配置路由以使用嵌入式模板? 更新:这是我的服务器渲染的DOM的样子 问题答案: Ody,您的方向正确,唯一的问题是标记位于使用指令的DOM元素 之外。如果将其移至元素,则内联模板应该可以使用。