尋找高級DOM/JS架構師的答案。SPA中的ID空間
我的問題是在另一個question/answer的背景下,它討論了在SPA中乾淨的ID空間。
由於受到一些限制,我無法使用任何數據綁定框架,而是普通的vanilla html,因此期待高級架構師的建議,他們知道內部數據綁定框架的內部固定。
例如,我一旦生成一些DOM記錄http GET
調用返回。
Brand.prototype.appendChild = function(data) {
var self = this;
var li = document.createElement("li");
li.setAttribute("id", "brand_" + data.id);
li.innerHTML = "<p>" + data.name + "</p>";
var p = document.createElement("p");
p.innerHTML = "Delete";
li.appendChild(p);
p.addEventListener("click", function(){
Brand.prototype.delete.call(self, {id: data.id});
});
this.element.appendChild(li);
};
// http delete happens outside via delegate, so it's async
Brand.prototype.delete = function(data) {
this.delegate.requestConfirm(new model.vo.RequestVO(data, AppConstants.DELETE), "Are you sure you want to delete?");
};
// when http delete request returns, it passes the original data request, I've to find the DOM and delete it
Brand.prototype.removeChild = function(data) {
var element = document.getElementById("brand_" + data.id);
element.parentNode.removeChild(element);
};
輸出看起來像這樣。
<li id="brand_0">
<p>Brand Name</p>
<p>Delete</p>
</li>
,如果在刪除用戶點擊,這是一個異步操作(不承諾),而一旦刪除請求返回,我找了特定ID並刪除它。
所以關鍵是我沒有身份證我不能有我的方式,我必須在所有記錄的dom中有一個id,如果我有一個SPA的幾個部分,我在id前加一個命名空間字符串,當然如果我有幾個深嵌套的部分,它會變得混亂。
即使我正在使用某種數據綁定框架,我仍然需要從數組中刪除該特定對象,可以調用digest
或任何可以刪除的對象。
所以問題變成了,有沒有方法可以在普通香草JS中聲明ID的情況下進行CRUD工作?
編輯在guest271314的建議後。
Brand.prototype.appendChild = function(data) {
var self = this;
var li = document.createElement("li");
li.innerHTML = "<p>" + data.name + "</p>";
var p = document.createElement("p");
p.innerHTML = "Delete";
li.appendChild(p);
p.addEventListener("click", function(event){
Brand.prototype.delete.call(self, {id: data.id, event: event});
});
this.element.appendChild(li);
};
Brand.prototype.removeChild = function(data) {
var element = data.event.target;
var grandparent = element.parentNode.parentNode;
grandparent.removeChild(element.parentNode);
};
在事件處理程序中使用'return function(){}'是什麼目的,在事件處理程序中使用'(data.id)'是什麼目的? – guest271314
還不確定是什麼問題? – guest271314
沒有問題,只是尋找更好的方法和技術,所以我不必過多地依賴dom id特別是刪除,有沒有辦法使CRUD工作而不依賴於ID,我想知道是否數據綁定框架找出了一種不使用ID的方式。 – user2727195