【问题标题】:Nette - snippet updateNette - 片段更新
【发布时间】:2018-09-07 08:20:20
【问题描述】:

sn-p 更新有问题。更改选择框中的选择后,我在另一个选择框中重新绘制了选项的内容,但 sn-p 没有更新。

拿铁:

<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 文件:

$(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'
        });
    });
});

控制器:

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');
    }
}

表单还没有创建和处理,所以我做的第一个选择框是临时的,带有sn-p的选择框是独立于表单的。我用它来复制。 JS 正确调用处理程序,如果我在 redrawControl 之前转储 $this->template->hriciDomaci 数据就在那里,但 redrawControl 不会做任何事情。但是在下面的 Tracy 栏的页面中添加了一个新的过程行。 我的调试器中没有错误,进程的状态为 200,但响应仅包含:

{"state":[],"snippets":{"snippet--hraciDomaci":"\t\t\t\t\t\t\t\t\t\t<option></option>\n"}}

我尝试使用 $.get 而不是 $.nette.ajax,将 包裹在 sn-pArea 我通常在{block content} 中有此代码,因此不需要 sn-pAreanette.ajax.js 初始化$.nette.init(); 我也有。

非常感谢您的建议。

【问题讨论】:

  • 您的 ajax 代码在调用后不执行任何操作。 php 需要返回 html 并且您的 ajax 锥体必须插入它。 .bind 也不推荐用于 .on
  • @mplungjan 不,它正在工作,但我遇到了如下评论所述的问题。但是感谢 .bind 弃用。我会改变的。

标签: javascript php ajax nette


【解决方案1】:

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

【讨论】:

  • 我不知道这是一个问题,它是 ajax 请求并且没有重新加载页面。我在 render* 方法中将空数组设置为变量。固定的!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
相关资源
最近更新 更多