Basic information
- Go version: go1.4.2 darwin/amd64
- Operating System: Mac OS X 10.10.5
I'm working on a small Web project written based on go and gin. Here is my golang code. After running go run test.go
we have a web server, which is listening on 8089.
Golang test.go
package main
import "github.com/gin-gonic/gin"
import "net/http"
func main() {
router := gin.Default()
router.LoadHTMLGlob("templates/*")
router.GET("/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{
"scheme": "http",
"domain": "meican.loc",
})
})
router.Run(":8089") // listen and serve on 0.0.0.0:8089
}
The html code generated in back-end should contain a template used by front-end javascript engine (Let's say Angular.js).
So the template code is in script
tag, just like this:
Part of templates/index.html
<script type="text/template" charset="utf-8">
<div data="{{.scheme}}://{{.domain}}/qr"></div>
<div data="{{.scheme}}://{{.domain}}/qr"></div> <!-- problem here -->
</script>
When {{.domain}}
is used at the second time, I got different result. I refreshed the browser and checked out the source code. Then I got this:
Browser source code result
<script type="text/template" charset="utf-8">
<div data="http://meican.loc/qr"></div>
<div data="http://"meican.loc"/qr"></div> <!-- problems here -->
</script>
The second div
has 2 extra double quotes.
Why this happens? And how to resolve this problem?