2013-01-04 46 views
0

我希望把我的HTML模板(實際上是JavaScript的一部分)無效或繩子電子郵件引號字符串:轉到:模板

var email = null; 
// or a string: 
var email = "[email protected]"; 

但隨着模板

var email = {{.Email}}; 

我被引用的字符串每次:

var email = "null"; 
var email = "[email protected]"; 

如何解決?

編輯:這裏是我的代碼:http://play.golang.org/p/8k4s8dv2PE

你可以看到進入環繞串加上引號,並刪除評論 - 有前或後處理。

+5

我懷疑問題出在你的Go代碼,你不提供這樣很難說。你是否在Go中引用了引號的價值? –

+0

下面是示例:http://play.golang.org/p/8k4s8dv2PE 它不起作用(您可以在線運行它)。 – demi

+0

首先,請在分享之前按格式化按鈕。它位於分享按鈕旁邊,使其更具可讀性。其次,它是HTML /模板中記錄的行爲。這是一個清理的例子,顯示了兩個:http://play.golang.org/p/AcySM8UADL – Dustin

回答

5

沒有看到您的代碼,我能做的最好的是提供an example that shows your required functionality

如果我不得不猜測,我會說你傳遞的數據是一個字符串,而不是一個字符串指針。一個字符串的值不能是nil/null,只能是一個字符串指針。雖然這會產生一個「」,而不是「零」(as demonstrated here),所以我只能想象這是你在代碼中做的奇怪事情。

爲了防止鏈接腐爛,我重複了下面的代碼示例,但值得點擊鏈接來查看它們的輸出。

所需的功能

package main 

import (
    "log" 
    "os" 
    "html/template" 
) 

type TemplateData struct { 
    Email *string 
} 

func main() { 

    const temp = "<script>var email = {{.Email}};</script>\n" 

    t := template.Must(template.New("email_template").Parse(temp)) 
    email := "[email protected]" 
    err := t.Execute(os.Stdout, TemplateData{ 
     Email: &email, 
    }) 
    if err != nil { 
     log.Println("executing template:", err) 
    } 
    err = t.Execute(os.Stdout, TemplateData{ 
     Email: nil, 
    }) 
    if err != nil { 
     log.Println("executing template:", err) 
    } 

} 

試圖用一個 「空」 的字符串

package main 

import (
    "log" 
    "os" 
    "html/template" 
) 

type TemplateData struct { 
    Email string 
} 

func main() { 

    const temp = "<script>var email = {{.Email}};</script>\n" 

    t := template.Must(template.New("email_template").Parse(temp)) 
    email := "[email protected]" 
    err := t.Execute(os.Stdout, TemplateData{ 
     Email: email, 
    }) 
    if err != nil { 
     log.Println("executing template:", err) 
    } 
    err = t.Execute(os.Stdout, TemplateData{ 
    }) 
    if err != nil { 
     log.Println("executing template:", err) 
    } 

} 
+0

在這裏我的示例不起作用:http://play.golang.org/p/8k4s8dv2PE – demi

+2

@demi html/template上下文自動轉義文本。由於該字符串位於腳本上下文中,因此它將轉換爲JavaScript字符串。要獲得一個空對象,你需要傳遞一個零字符,而不是一個包含單詞「null」的字符串。查看我的實施所需的功能。 – Paddy