Javascript~SailsJs Action未定义

时间:2017-12-11 11:12:31

标签: javascript sails.js

问题

所以我编辑一个crud应用程序以在删除之前进行确认,我创建了一个javascript函数来执行此操作,但我在我的cmd和" show&#34中收到以下错误;页

  

错误:发送500("服务器错误")响应:ReferenceError:
  C:\用户\米莎\文档\ intelligente-vraagbaak \意见\答案\ show.ejs:176
      174 |如果(c){
      175 |的console.log("完成&#34);
      176 | window.location.href =" action / delete /<%= action.id%>"
      177 | }
      178 |
      179 |否则{

     

未定义操作

守则

这是删除应该发生的代码的一部分,

<td class="actions" style="display: block; margin: 0 auto">
                        <a href="/actionbrand/create/<%= action.id %>"
                           class="btn btn-sm btn-icon btn-pure btn-default on-default"
                           data-toggle="tooltip"
                           data-original-title="Toevoegen"><i class="icon wb-plus" aria-hidden="true"></i></a>
                        <a href="/action/show/<%= action.id %>"
                           class="btn btn-sm btn-icon btn-pure btn-default on-editing"
                           data-toggle="tooltip"
                           data-original-title="Bekijk"><i class="icon wb-eye" aria-hidden="true"></i></a>
                        <a href="/action/edit/<%= action.id %>"
                           class="btn btn-sm btn-icon btn-pure btn-default on-default"
                           data-toggle="tooltip"
                           data-original-title="Bewerk"><i class="icon wb-edit" aria-hidden="true"></i></a>
                        <form id="deleteAction" action="javascript:Delete()" method="POST">
                            <button type="submit"
                                    class="btn btn-sm btn-icon btn-pure btn-default on-default"
                                    data-toggle="tooltip"
                                    data-original-title="Verwijder"><i class="icon wb-trash" aria-hidden="true"></i>
                            </button>
                        </form>
                    </td>
                </tr>
                <% }) %>
                </tbody>
            </table>
            </div>
        </div>
    </div>
</div>
<script>
    function Delete(){
        let c = confirm('U staat op het punt een actie te verwijderen, klik op "ok" om hier mee door te gaan');
        if (c){
            console.log("done");
            window.location.href = "action/delete/<%=action.id %>"
        }

        else{
            console.log("failed")
            window.location.href = "/answer/show/<%= answer.id %>"
        }
    }
</script>

我不知道

我没有收到此错误,因为我在整个页面上使用变量操作并且没有任何错误,但是当我在我的函数中使用它时,我收到错误。我究竟做错了什么?任何帮助都会很好(对不起我的英语我不是母语人士)

修改

在哪里&#34;行动&#34;来自

Action是我所有操作的别名,在<tr><td>...</td></tr>

上方的foreach循环中定义
 <%- answer.actions.length === 0 ? "<tr><td>No results</td></tr>" : null %>
            <% _.each(answer.actions, action => { %>

1 个答案:

答案 0 :(得分:1)

@mjZac在他的评论中是正确的 - action仅在你的循环中被定义,所以它在循环之外是未定义的。

您需要将操作(或仅action.id)信息传递给您的方法。您设置的方式,我认为您可以通过将其作为参数添加到方法调用中来实现。

<% _.each(answer.actions, action => { %>
    <td class="actions" style="display: block; margin: 0 auto">
        <!-- some other stuff... -->
        <form class="deleteAction" action="javascript:Delete(<%= action.id %>)" method="POST">
            <button type="submit" class="btn btn-sm btn-icon btn-pure btn-default on-default" data-toggle="tooltip" data-original-title="Verwijder"><i class="icon wb-trash" aria-hidden="true"></i></button>
        </form>
    </td>
<% }) %>

<script>
    function Delete(actionId){
        let c = confirm('U staat op het punt een actie te verwijderen, klik op "ok" om hier mee door te gaan');
        if (c){
            console.log("done");
            window.location.href = "action/delete/" + actionId;
        }
    }
</script>

总而言之,模板会将动作ID添加到每个Delete()中的tr方法调用中,然后脚本会使用该ID在纯javascript中生成它的url(不涉及模板标记)。