我的Go模板中包含以下内容。
<button type="submit" class="validate_button" onclick="validate({{.Quiz.ID}})">Validate</button>
这不起作用,并且出现此Javascript错误:
"Property assignment expected."
这当然很完美:
<button type="submit" class="validate_button" onclick="validate(1234)">Validate</button>
这里正确的语法是什么?
注意 :我正在使用VS Code。同样是告诉我有错误,但我可以编译就可以了。问题是,一旦我运行该应用程序,页面上就没有“按钮”。它只是消失了。当我对值进行硬编码时,它可以正常工作。
这是执行我的模板的输出:
2020/02/13 09:52:49 template: execute.html:38:79: executing "execute.html" at <.Quiz.ID>: can't evaluate field Quiz in type models.Question
这是我的模板:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Linux Quiz</title> <meta name="description" content="Linux Quiz"> <meta name="author" content="Matias Barrios"> <link rel="stylesheet" href="static/executeQuizz/style.css"> <link rel="stylesheet" href="static/style.css"> <link rel="stylesheet" href="static/bootstrap/css/bootstrap.css"> <script src="static/bootstrap/js/bootstrap.min.js"></script> <script src="static/executeQuizz/main.js"></script> </head> <body> <div class="topnav"> <a class="active" href="/index">Home</a> <a href="/logout" class="righty" ><div>Logout : <b>{{ .User.Name }}</b></div></a> <a href="/contact" class="righty" >Contact</a> <a href="/about" class="righty" >About</a> </div> <div class="title_and_description" > <h5> {{ .Quiz.ID }} </h5> <h6> {{ .Quiz.Description }} </h6> </div> {{range $q := .Quiz.Questions}} <div class="question_container"> <p><h4>{{ $q.Question }}</h4></p> {{ $mode := $q.Mode }} {{ if eq $mode "single" }} {{range $o := $q.Options}} <input type="radio" id="{{ $q.ID }}" name="{{ $q.ID }}" value="{{$o}}"> <label for="{{ $q.ID }}">{{$o}}</label><br> {{end}} {{ end}} </div> <div class="validate_quiz"> <button type="submit" class="validate_button" onclick="validate({{.Quiz.ID}})">Validate</button> </div> {{ end }} </body> </html>
这是模板的执行:
func executeQuizzHanlder(w http.ResponseWriter, r *http.Request) { if r.URL.Path != "/execute" && r.Method != "GET" { errorHandler(w, r, http.StatusNotFound) return } claims := getClaims(w, r) u := models.User{ Name: claims.Username, } keys, ok := r.URL.Query()["quizz"] if !ok || len(keys) < 1 || len(keys[0]) < 1 { errorHandler(w, r, http.StatusNotFound) return } quizz, err := quizzes.GetQuizzByID(keys[0]) if err != nil { errorHandler(w, r, http.StatusNotFound) return } quizz.ID = keys[0] envelope := models.ExecuteQuizzEnvelope{ User: u, Quiz: quizz, } err = views.ViewExecuteQuizz.Execute(w, &envelope) log.Println(err.Error()) }
这是我的模特:
package models
// Question :
type Question struct {
ID string `json:"id"`
Mode string `json:"mode"`
Question string `json:"question"`
Options []string `json:"options"`
Answers []string `json:"answers"`
}
// Quiz :
type Quiz struct {
ID string `json:"id"`
Description string `json:"description"`
Author string `json:"author"`
Questions []Question `json:"questions"`
Completed bool `json:"-"`
}
// ExecuteQuizzEnvelope :
type ExecuteQuizzEnvelope struct {
User User
Quiz Quiz
}
我的Go模板中包含以下内容。
感谢大家的答复。如@mkopriva所述,在range