首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nette -片段更新

Nette -片段更新
EN

Stack Overflow用户
提问于 2018-09-07 08:20:20
回答 1查看 1K关注 0票数 0

我对片段更新有问题。在更改了选中框中的选择后,我在另一个选择框中重新绘制选项的内容,但是代码段不更新。

拿铁:

代码语言:javascript
复制
<form class="df-checkout">
...

<select n:href="getHraci!" name="domaci" id="domaci" class="form-control">
    <option value="">Vybrat</option>
    <option n:foreach="$tymy as $tym" value="{$tym->getId()}">
        {$tym->getNazev()}
    </option>
</select>

...

<div class="row helpers hidden">
    <select n:snippet="hraciDomaci" class="form-goly-domaci-select form-control">
        <option></option>
        <option n:foreach="$hraciDomaci as $hrac" value="{$hrac->getId()}">
            {$hrac->getPrijmeni()} {$hrac->getJmeno()}
        </option>
    </select>

    <input type="text" class="form-goly-input form-control">
</div>

JS文件:

代码语言:javascript
复制
$(document).ready(function(){
    $("#domaci").bind('change', function() {
        var link = $(this).attr("href");

        $.nette.ajax ({
            url: link,
            data: {"strana": "domaci", "tymId": $(this).val()},
            type: 'get',
            dataType:'json'
        });
    });
});

主计长:

代码语言:javascript
复制
public function handleGetHraci($strana, $tymId)
{
    $tym = $this->tymManager->getTymRepository()->find($tymId);
    $muzstvo = $this->tymManager->getMuzstvoRepository()->findBy(["nazev" => self::HLAVNI_TYM]);
    $hraci = $this->hracManager->getHracRepository()
                ->findBy(["tym" => $tym, "muzstvo" => $muzstvo], ["prijmeni" => "ASC", "jmeno" => "ASC"]);

    if($this->isAjax()){
        $this->template->hraciDomaci = $hraci;

        $this->redrawControl('hraciDomaci');
    }
}

表单尚未被创建和处理,因此我所做的第一个选择框是临时的,带有片段的选择框与表单无关。我用它复制。JS正确地调用处理程序,如果我在redrawControl之前转储$this->template->hraciDomaci,数据就在那里,但是redrawControl不会做任何事情。但是在下面的Tracy栏中添加了一个新的处理行到页面中。我的调试器中没有错误,进程的状态为200,但响应只包含:

代码语言:javascript
复制
{"state":[],"snippets":{"snippet--hraciDomaci":"\t\t\t\t\t\t\t\t\t\t<option></option>\n"}}

我尝试使用$.get而不是$.nette.ajax,在snippetArea中包装,通常在{block content}中有这段代码,所以不应该需要snippetArea。nette.ajax.js的初始化$.nette.init();我也有。

非常感谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-07 08:52:36

检查没有在演示者中用hraciDomaci方法(例如renderDefault)重写render*变量

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52218327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档