Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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
Javascript knockoutjs afterAdd和afterRender问题_Javascript_Mvvm_Knockout.js - Fatal编程技术网

Javascript knockoutjs afterAdd和afterRender问题

Javascript knockoutjs afterAdd和afterRender问题,javascript,mvvm,knockout.js,Javascript,Mvvm,Knockout.js,我使用的是一个简单的模板,其中包含一个{{each}}块。每次集合中发生更改时,整个模板都会重新呈现 然后我在模板绑定中附加了afterRender事件。调用的函数只需将焦点设置为新添加的输入元素。工作得很好 {{each Fabbricati}} <li> <div style="float: left; clear: left;"> {{if Editing}} <input id="editingitem" type="

我使用的是一个简单的模板,其中包含一个{{each}}块。每次集合中发生更改时,整个模板都会重新呈现

然后我在模板绑定中附加了afterRender事件。调用的函数只需将焦点设置为新添加的输入元素。工作得很好

{{each Fabbricati}}
<li>
    <div style="float: left; clear: left;">
        {{if Editing}}
        <input id="editingitem" type="text" data-bind="value: Name, event: { blur: function() { Editing(false) }, keypress: function(event) { if (event.which == 13) { blur() } return true; } }" />
        {{else}}
        <span data-bind="click: function() { Editing(true) }">${Name() || 'Senza nome'}</span>
        {{/if}}
        - <button class="fancybox edit" data-bind="click: function() { Edit(Id()) }">Modifica</button><button class="remove" data-bind="click: Remove">Rimuovi</button>
    </div>
</li>
{{/each}}
以及主叫部门:

<div id="wrapper" data-bind="template: { name: 'navTemplate', afterRender: Prettify </div>
现在我尝试将{{each}}中的块移动到一个独立的模板,并使用模板绑定中的foreach选项调用它。到目前为止还不错,但这里有一个陷阱:afterRender将不再工作。我的输入无法获得焦点

我已经在互联网上读到,这是一种有意的行为,并打算改用afterAdd,但这并不奏效。“我的美化”功能的效果总是添加到所有元素中,最后添加的元素除外。如果我再加一个,前一个会得到行为,等等

我真的卡住了。如果有人知道如何解决这个问题,那将是一个救命稻草

谢谢。

试试这个:

将{{each}}与可观察数组一起使用

当使用{{each someArray}}时,如果您的值是一个observearray,则必须通过写入{{each myObservableArray}}而不仅仅是{{each myObservableArray}将基础数组传递给每个数组

因此,请尝试:

{{each Fabbricati()}} 
试试这个:

将{{each}}与可观察数组一起使用

当使用{{each someArray}}时,如果您的值是一个observearray,则必须通过写入{{each myObservableArray}}而不仅仅是{{each myObservableArray}将基础数组传递给每个数组

因此,请尝试:

{{each Fabbricati()}} 

我会试着看一看新版本的淘汰赛。它有一些不同的绑定方法,这些方法更简单,可以更好地满足您的需要。网站上有一系列新功能

我遇到了一些与您的问题类似的问题,但使用了新的控制流绑定,从而大大简化了我的代码。见下文

关于afterRender:

<ul data-bind="foreach: products, afterRender: callback">
<li>
    <strong data-bind="text: name"></strong>
    &mdash;
    Last updated: <em data-bind="text: $parent.lastUpdated"></em>
</li>

这与我昨天运行的代码类似。我发现每次生成一行时都会调用afterRender。我想这就是你想要的行为。淘汰赛1.3测试版说明-afterRender&IE9今天有一个问题,因为它将导致一个异常。

我将尝试查看Beta版淘汰赛的新版本。它有一些不同的绑定方法,这些方法更简单,可以更好地满足您的需要。网站上有一系列新功能

我遇到了一些与您的问题类似的问题,但使用了新的控制流绑定,从而大大简化了我的代码。见下文

关于afterRender:

<ul data-bind="foreach: products, afterRender: callback">
<li>
    <strong data-bind="text: name"></strong>
    &mdash;
    Last updated: <em data-bind="text: $parent.lastUpdated"></em>
</li>

这与我昨天运行的代码类似。我发现每次生成一行时都会调用afterRender。我想这就是你想要的行为。淘汰版1.3测试版说明-afterRender&IE9今天有一个问题,因为它将导致一个异常。

似乎你根本没有读过我的帖子。我说用{{each}}语法我一点问题都没有,一切都很好。我的问题是模板:{foreach:Fabbricati}语法。好的。嗯{{each}}和foreach的工作方式不同。{{each}}当某些内容发生更改时,将重新启动整个模板,从而触发afterRender。foreach只删除/添加单个项,不重新提交完整模板,因此在不调用afterRender后它才有意义。你见过这个例子吗?也许你可以试试afterAdd:functionelem{//do your stuff here}语法。同样,如果你读了我的全部文章,我说我尝试了afterAdd,但没有成功。那么如果你使用afterAdd:functionelem{//do your stuff here}语法,elem是什么?它是null还是添加的最后一个元素?另外,请你不要再三地说我没有读过你的帖子——我读过。起初我可能没有领会其中的要点,但我只是想在这里提供帮助,如果能有点礼貌的话,我将不胜感激。谢谢。对不起,我不是故意粗鲁的。在使用JS时,有点太沮丧了。我会尽快发布更多的细节。谢谢。看来你根本没看过我的帖子。我说用{{each}}语法我一点问题都没有,一切都很好。我的问题是模板:{foreach:Fabbricati}语法。好的。嗯{{each}}和foreach的工作方式不同。{{each}}当某些内容发生更改时,将重新启动整个模板,从而触发afterRender。foreach只删除/添加单个项,不重新提交完整模板,因此在不调用afterRender后它才有意义。你见过这个例子吗?也许你可以试试afterAdd:functionelem{//do your stuff here}语法。同样,如果你读了我的全部文章,我说我尝试了afterAdd,但没有成功。那么如果你使用afterAdd:functionelem{//do your stuff here}语法,elem是什么?它是null还是添加的最后一个元素?另外,请你不要再三地说我没有读过你的帖子——我读过。我一开始可能有
我没有领会要点,但我只是想在这里提供帮助,如果有点礼貌的话,我将不胜感激。谢谢。对不起,我不是故意粗鲁的。在使用JS时,有点太沮丧了。我会尽快发布更多的细节。谢谢。请确保您的绑定使用了iObject作为选项,例如Kris,您救了我一天。这让我有一段时间被打败了,我想知道为什么afterRender没有更新。请确保您的绑定使用了一个iObject作为选项,例如Kris,您救了我一天。这让我有一段时间被打败了,我想知道为什么afterRender没有更新。