在这篇文章中,我们将带领您了解Golang模板的全貌,包括并将函子传递给模板的相关情况。同时,我们还将为您介绍有关angular2:将HTML元素传递给模板、Angular2:将函数传递给模板上的ng
在这篇文章中,我们将带领您了解Golang模板的全貌,包括并将函子传递给模板的相关情况。同时,我们还将为您介绍有关angular 2:将HTML元素传递给模板、Angular 2:将函数传递给模板上的ngClass标记、angular – 将NavigationExtras传递给模板中的routerLink、angularjs – 如何在使用createDialog时将动态数据传递给模板的知识,以帮助您更好地理解这个主题。
本文目录一览:- Golang模板(并将函子传递给模板)(golang 模板函数)
- angular 2:将HTML元素传递给模板
- Angular 2:将函数传递给模板上的ngClass标记
- angular – 将NavigationExtras传递给模板中的routerLink
- angularjs – 如何在使用createDialog时将动态数据传递给模板
Golang模板(并将函子传递给模板)(golang 模板函数)
尝试访问传递给模板的函数时出现错误:
Error: template: struct.tpl:3: function "makeGoName" not defined
有人可以让我知道我在做什么错吗?
模板文件(struct.tpl):
type {{.data.tableName}} struct { {{range $key, $value := .data.tableData}} {{makeGoName $value.colName}} {{$value.colType}} `db:"{{makeDBName $value.dbColName}},json:"{{$value.dbColName}}"` {{end}}}
调用文件:
type tplData struct { tableName string tableData interface{}}func doStuff() { t, err := template.ParseFiles("templates/struct.tpl") if err != nil { errorQuit(err) } t = t.Funcs(template.FuncMap{ "makeGoName": makeGoName, "makeDBName": makeDBName, }) data := tplData{ tableName: tableName, tableData: tableInfo, } t.Execute(os.Stdout, data)}func makeGoName(name string) string { return name}func makeDBName(name string) string { return name}
这是用于生成struct样板代码的程序(以防万一有人想知道为什么我要在模板中这样做)。
答案1
小编典典自定义函数需要在解析模板之前进行注册,否则解析器将无法分辨标识符是否为有效的函数名。模板被设计为可静态分析的,这是必需的。
您可以先使用创建一个新的未定义模板template.New()
,并且除了
函数 之外,类型(由返回)还具有 方法
,您可以调用该方法。template.ParseFiles()
template.Template
New()
Template.ParseFiles()
像这样:
t, err := template.New("").Funcs(template.FuncMap{ "makeGoName": makeGoName, "makeDBName": makeDBName,}).ParseFiles("templates/struct.tpl")
请注意,该template.ParseFiles()
函数还会template.New()
在后台调用,将第一个文件的名称作为模板名称传递。
还Template.Execute()
返回error
,打印以查看是否未生成任何输出,例如:
if err := t.Execute(os.Stdout, data); err != nil { fmt.Println(err)}
angular 2:将HTML元素传递给模板
<a href="javascript:blahblah...>Something</a>
我分配它来说锚:HTMLAnchorElement;在组件中.当我尝试在模板中显示它时,如下所示:
{{anchor}}
它出来的javascript:0 blehblahek.
我想要做的就是将HTML元素传递给模板.我怎样才能做到这一点?
零件
someHtmlCode: string = "<div><b>This is my HTML.</b></div>"
模板
<div [innerHTML]="someHtmlCode"></div>
但是,如果要传递脚本标记或其他一些有潜在危险的代码,则需要使用DomSanitizer
.
Angular 2:将函数传递给模板上的ngClass标记
当我将函数传递给ngStyle时,我得到以下错误:
ProductView中的表达式’getClass()’在检查后发生了变化.
我的模板看起来像:
<div> <div[ngClass]="getClass()"> <img [src]="'img/thumbs/' + item.images[0]"https://www.jb51.cc/tag/timage/" target="_blank">timage" id="productimage"> </div> </div>
我不知道什么会解决这个问题,即使目前可以做到这一点.我注意到ngStyle也会出现这个错误.
所有帮助将不胜感激.
在您的情况下,模板表达式是一个函数(而不是组件属性).没关系.但根据Template Syntax开发指南的“表达指南”部分,表达式必须是“幂等的”.这意味着,如果
expression returns a string or a number,it returns the same string or number when called twice in a row. If the expression returns an object (including a
Date
orArray
),it returns the same object reference when called twice in a row.
由于您没有为getClass()函数提供代码,我们只是假设它违反了幂等规则. (您可能每次都返回一个新数组或一个新对象.)
在开发模式(默认模式)中,更改检测运行两次,它将捕获幂等违规.
要解决此问题,请返回相同的数组或对象引用(但您可以修改数组内容或对象属性/值).例如.,
export class MyComponent { anArray = []; getClass() { // manipulate (don't reassign) anArray here,and return it return this.anArray; } }
angular – 将NavigationExtras传递给模板中的routerLink
我知道skipLocationChange:true必须作为NavigationExtras参数传递给路由器.
我的问题是:
是否可以从模板内部将NavigationExtras传递给routerLink?
我试过的:
<h1> {{title}} </h1> <ul> <li><a [routerLink]="['route1',{ skipLocationChange: true }]">Route1</a></li> <li><a [routerLink]="['route2',{ skipLocationChange: true }]">Route2</a></li> </ul> <router-outlet></router-outlet>
但它不起作用.
单击链接后,路由将更改为http:// localhost:4200 / route2; skipLocationChange = true
我不想在我的控制器中使用this.router.navigate([‘route1],{skipLocationChange:true),从此我失去了routerLinkAtive突出显示.
但是,您可以将路由器中的NavigationExtras与ActivatedRoute结合使用,并根据该链接是否应该处于活动状态
更新
从2.3.0-beta.0开始,您可以将skipLocationChange选项添加到routerLink指令:
<li><a [routerLink]="['route1']" skipLocationChange>Route1</a></li>
angularjs – 如何在使用createDialog时将动态数据传递给模板
>创建 – 应显示弹出的空字段
>编辑 – 现有数据应预先填充以弹出
>我使用相同的弹出窗口进行创建和编辑操作
create_quick_link.html <div> <div> <label> <font>Name</font> <span>*</span> </label> <input placeholder="Name" type="text" ng-model="quickLink.name"> </div> <div> <label> <font>URL</font> <span>*</span> </label> <input placeholder="URL" type="text" ng-model="quickLink.url"> </div> </div> $scope.editQuickLink = function (editableQuickLinkdata) { $scope.quickLink.name = editableQuickLinkdata.quickLinkName; $scope.quickLink.url = editableQuickLinkdata.quickLinkUrl; createDialog({ templateUrl: '/app/ajs/followup/app/views/create_quick_link.html',title: 'Edit Quick Link',controller: 'FollowupssettingsCtrl',footerTemplate: '<buttonng-click="updateQuickLink(quickLink)">Update</button>' }); }
我想设置
editableQuickLinkdata to quickLink
我的数据没有填充.我做错了吗?
$scope.editQuickLink = function (editableQuickLinkdata) { createDialog({ templateUrl: '/app/ajs/followup/app/views/create_quick_link.html',controller: 'EditCtrl',footerTemplate: '<buttonng-click="updateQuickLink(quickLink)">Update</button>' },{myOldData: editableQuickLinkdata}); }
然后在EditCtrl中,除了$scope之外,您将获得myOldData作为参数:
angular.module('MyApp').controller('EditCtrl',['$scope','myOldData',function($scope,myOldData) { // Do stuff }]);
我们今天的关于Golang模板和并将函子传递给模板的分享已经告一段落,感谢您的关注,如果您想了解更多关于angular 2:将HTML元素传递给模板、Angular 2:将函数传递给模板上的ngClass标记、angular – 将NavigationExtras传递给模板中的routerLink、angularjs – 如何在使用createDialog时将动态数据传递给模板的相关信息,请在本站查询。
本文标签: