3 回答

TA貢獻1851條經驗 獲得超4個贊
您似乎采用的方法是Ajax,響應,渲染模板。話雖如此,您可能需要重新考慮您的方法。
步驟1。
建立范本
<template id="...">
<button type="button" value="[action]" onclick="[url]">[text]</button>
</template>
第2步。
創建您的請求。
axios.get('...').then((response) => {
// Retrieve template.
// Replace bracket with response object model data.
html += template.replace('[action]', response.action);
});
第三步
讓JavaScript呈現您的模板。
上面的代碼可以創建一個清晰簡潔的代碼庫,該代碼庫在范圍更改時更易于維護和擴展,而不是單個請求通過嵌入式標記執行更改。這種方法對我來說效果很好,而且我認為它將使您的疑難解答和定義變得更容易,因為控制器將對象移交給JavaScript,而不是標記/視圖數據。這將是對前端的更好的有限控制,并在將來進行明確的修改。

TA貢獻1829條經驗 獲得超13個贊
有多種方法可以做到這一點。費利佩在上面的答案中提到了一個。這是使用不干擾js的另一種替代方法
將電子郵件作為html5數據屬性以及另一個我們將用于綁定點擊行為的屬性添加到按鈕。
u.userClaims.forEach(function (k) {
// Add quotes as needed if you want multiline ( i just removed those)
s += "<td>" + k.type + "</td><td>" + k.value + "</td><td>
<input type='button'
clickablebutton data-email='" + u.email + "' value='Create'/></td>";
});
現在,在準備好文檔的過程中,將click事件處理程序綁定到那些元素(具有我們的custom屬性),并讀取data屬性并構建所需的url。
$(document).on("click", "input[clickablebutton]", function (e){
var url = '@Url.Action("EditClaims", "Accounts")?useremail=' + $(this).data("email");
window.location.href = url;
});
其他一些建議
使用適當的元素。按鈕勝于輸入(考慮輔助功能)
如果用于導航,請使用錨標記而不是按鈕。
內聯JavaScript并不是很好。讓瀏覽器解析您的標記而不會造成任何干擾,然后您可以稍后添加行為腳本(這是uobutrisive js方法的重點)
- 3 回答
- 0 關注
- 213 瀏覽
添加回答
舉報