Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将参数传递给Go模板中的javascript函数_Javascript_Go Templates - Fatal编程技术网

将参数传递给Go模板中的javascript函数

将参数传递给Go模板中的javascript函数,javascript,go-templates,Javascript,Go Templates,我的Go模板中有以下内容 <button type="submit" class="validate_button" onclick="validate({{.Quiz.ID}})">Validate</button> 这当然非常有效: <button type="submit" class="validate_button" onclick="validate(1234)">Validate</button> 谢谢大家的回复。正如@mkopr

我的Go模板中有以下内容

<button type="submit" class="validate_button" onclick="validate({{.Quiz.ID}})">Validate</button>
这当然非常有效:

<button type="submit" class="validate_button" onclick="validate(1234)">Validate</button>

谢谢大家的回复。正如@mkopriva所述,在。设置为迭代元素。我最初认为这个语法

{{range $o := $q.Options}}
因为我将迭代变量命名为o,所以可以避免这种情况,但我的假设是错误的


这就是本例中的问题。

执行模板的输出是什么?什么都没有。应用程序已编译,但该按钮在页面中不可见。如果我检查页面,就没有按钮了。比如模板引擎放弃了,忘记了按钮。如果我直接硬编码一个像1234这样的值,它就会显示出来。执行模板的代码在哪里?如果执行模板没有输出,那么执行模板可能会出错。Execute方法返回的错误是什么?@MatiasBarrios正如您在这里看到的,您在问题中包含的一小块模板没有任何问题。问题要么出在您的Go代码中,要么出在您忽略的模板部分。当你就此提出问题时,你应该努力提供一个答案。
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
}
{{range $o := $q.Options}}