我需要通過angular2中的html元素訪問模型。在我的情況下,我使用ng2-dragula執行拖放操作,其服務只能訪問被拖動的html元素。我需要更新元素的相應模型。繼承人問題在github。在angular2中通過html元素獲取模型
6
A
回答
0
如果您的ngFor從數組中編譯,您需要通過在bag元素上設置dragulaModel屬性來提供模型。
<ul [dragula]='"bag-one"' [dragulaModel]='items'> <li *ngFor="let item of items"></li> </ul>
,每當你重新定位的項目,該模型將被同步。在你的組件中,通過這樣做可以輕鬆獲得更新的模型。
this.dragulaService.drop.subscribe((value) => {
//let [bagName, e, el] = value;
console.log(this.items);
});
您會注意到項目被重新定位在您的模型中。
+1
有沒有辦法明確地告訴哪個項目被移動? – Umagon
2
您可以通過搜索由訂閱的參數提供的elementList
中的element
的索引來獲取您的物品的型號。
dragulaService.drop.subscribe(e => this.onDrop(e.slice(1)));
請參閱?
UPDATE:簡化(感謝Dracco)
private onDrop(args) {
let [e, el] = args; //element, elementList
let i = el.children.indexOf(e),
item = i+1? this.items[i] : null;
console.log(item); //The item
}
this.items
是存儲傳遞給dragula列表中的變量。 (例如:[dragulaModel]="items"
)。
我希望有一個更簡單的方法。告訴我,如果你找到一個!
老辦法:
private onDrop(args) {
let [e, el] = args; //element, elementList
let item;
for(let i in el.children){
if(el.children[i]==e){
item = this.items[+i];
break;
}
}
console.log(item); //The item
}
編輯:簡化了錯誤。
0
確保將el.children包裝在ES6陣列中。
let i = el.children.indexOf(e)
應該
let i = Array.from(el.children).indexOf(e)
我還發現,檢索與從父列表索引中的子元素產生不可預知的結果,有時甚至產生新的不確定項。
其他的直接ID解決方案:
<ion-item *ngFor="let child of children" [id]="child"></ion-item>
然後在onDrop方法
console.log(e.id);
相關問題
- 1. AngularJS - 通過html元素獲取ng模型
- 2. 通過其他元素通過ID獲取HTML元素
- 3. 通過字符串獲取HTML元素
- 4. Python HTML - 通過屬性獲取元素
- 5. 無法通過ID獲取HTML元素
- 6. 通過HTML對象獲取子元素
- 7. 在jQuery中通過ID獲取元素
- 8. 在Ember中通過ID獲取元素
- 9. Angular2從任何HTML元素獲取模板參考
- 10. 通過ClientInstanceName獲取元素
- 11. 通過Id獲取元素
- 12. 如何在Erlang中通過ID /類獲取HTML元素?
- 13. 骨幹模型通過ID獲取JSON元素
- 14. 在django模板中通過ID獲取元素
- 15. 通過id來獲取元素,在PHP
- 16. 獲取XML元素通過ID在C#
- 17. 如何通過.get()獲取父元素一次獲取元素
- 18. 通過preg_match從HTML文件中獲取2個元素
- 19. 如何通過JavaScript中的類獲取HTML元素?
- 20. 無法通過VB中的TagName獲取HTML元素
- 21. 獲取AJAX的HTML中的元素無法通過getElementbyID找到
- 22. 獲取html元素
- 23. 如何通過javascript從模板中獲取元素?
- 24. 通過給定元素childNode中的標記獲取元素
- 25. 通過angularjs中的另一個元素獲取元素
- 26. 在for循環中獲取html元素
- 27. 在.NET中獲取HTML元素信息
- 28. 在angularJS中獲取html元素
- 29. 如何在Xcode中獲取HTML元素?
- 30. 循環通過HTML元素
通過 「元素的模型」 你的意思是一些組件的屬性?一些代碼會有所幫助(Plunker首選)。 –
@MarkRajcok代碼在github上,鏈接在問題的最後。我的意思是使這個元素出現的angular2模型。檢查代碼後,如果不清楚,請告訴我。 –
我不知道有什麼辦法可以「從HTML元素到組件」 - 即給定一個HTML,我不知道如何獲得該元素使用HTML元素的引用...組件其模板具有該HTML元素。 –