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

通过ng-include渲染字符串模板

濮景龙
2023-03-14
问题内容

我正在尝试呈现一段动态路线上可用的html,该路线是通过$http.get()调用获取的,它返回了一段html,

仅举一个例子,我尝试加载此html部分:

<h1>{{ pagetitle }}</h1>
this is a simple page example

我做了一个小提琴,以模拟问题,但是为了简单起见,我省去了http调用,只是将html添加到了作用域中的字符串中。

控制器是:

function Ctrl($scope) {
    $scope.data = {
        view: "<h1>whaaaaa</h1>"        
    }; 
}

页面html是这样的:

<div ng-app="">
  <div ng-controller="Ctrl">
    <div ng-include src="data.view"></div>
  </div>
</div>

问题在于,它不会将字符串添加到html文件(ng-include)中,但是会明显地对由该字符串组成的url进行http调用。

因此,不可能仅将字符串输入到包含中吗?如果不是,那么对动态网址进行http调用并将返回的网址输入页面的正确方法是什么。

您可以在JSFiddle中使用它。


问题答案:

您可以向模板缓存中添加静态挂钩,因此,假设您有一个获取模板的服务:

myApp.service('myTemplateService', ['$http', '$templateCache', function ($templateCache) {
  $http(/* ... */).then(function (result) {
    $templateCache.put('my-dynamic-template', result);
  });

  /* ... */
}]);

然后,您可以执行以下操作:

<div include src=" 'my-dynamic-template' "></div>

注: 参考名称必须被包裹在单引号,这总是字节我.... 注意

请注意,在angular尝试解析URL之前,必须将其分配给模板缓存。

编辑:

如果动态URL逻辑足够简单,则还可以在ng-include中使用条件,例如

<div ng-include="isTrue() && 'template1.html' || 'template2.html'"


 类似资料:
  • 6.1 渲染模板 一旦你拥有一个模版文件,你可以通过给一个map来给它传递数据。 map是一个变量及赋予的值的集合,模板使用它来得到变量的值,或者对于块标签求值。 它的渲染函数有一个可选的变量键值对map 通过 ctx.Render() 方法来渲染模板,例如: func (r *Render) Serve(ctx *faygo.Context) error { return ctx.Ren

  • 我有一个即将开展的项目,该项目有以下要求: 使用非常简单(预期最终用户会使用它) 其中棘手的部分似乎是使用模板引擎从数据库加载模板。 我非常喜欢Thymeleaf的外观,但我不知道如何从字符串手动呈现模板-有人尝试过吗? 我愿意接受关于更好的工作技术的建议,但这是我的偏好。

  • Tango默认核心不包含模板渲染功能,在官方中间件中包含两个渲染引擎中间件,一个是 Go标准模板引擎, 另一个是 Pongo2模板引擎

  • 在控制器里模板渲染最常用的方法是display,在CMF中支持如下的模板渲染方式: //不带任何参数 $this->display(); 此种方式系统会自动判断模板路径,并渲染出模板内容,此种方式模板路径是:主题名/应用名/控制器名/操作名+模板文件后缀名; $this->display('edit'); 此种方式表示调用此控制器下的edit操作的模板; $this->display(':in

  • 问题内容: 我有一个带有选项卡的页面,我想在单击选项卡时仅通过ajax渲染不同的部分。我有一些代码,但我认为这不是最有效的方法。我希望有人能帮助我解决已经存在的代码,或者如果有一种更简单的方法,我将不胜感激。谢谢! HTML标签 学校负责人 最新JS 路线 问题答案: 请参阅我对上一篇文章的回答。这将为您提供一个在Rails中的AJAX想法:完成模型#更新后显示模型#新表单 您可以做的是在操作中呈

  • 问题 你想导入一个模块,但是模块的名字在字符串里。你想对字符串调用导入命令。 解决方案 使用importlib.import_module()函数来手动导入名字为字符串给出的一个模块或者包的一部分。举个例子: >>> import importlib >>> math = importlib.import_module('math') >>> math.sin(2) 0.9092974268256