1
用JavaScript代碼加載ko組件的最佳方式是什麼,而不是在html中定義自定義元素?我試着用ko.components.defaultLoader.load,但我的組件構造函數沒有命中。 我再次檢查,組件似乎已註冊。使用javascript加載knockoutjs組件
A
回答
0
我相信你要找的是函數ko.components.get(componentName,callback)。這種方法所要做的就是要求組件裝載器解析組件名稱,直到找到它。如果沒有找到,它會調用回調函數(null)。如果它沒有問題,它會調用callback(componentDefinition),其中componentDefinition是用於註冊組件的對象,如{viewmodel:...,template:...}。
據我所知,沒有一個現成的函數返回一個「工作」組件。你獲得componentDefinition對象之後做的是一樣的東西:
- 轉換模板到DOM元素
- 實例化視圖模型(如果定義)
- 綁定的視圖模型DOM元素
請注意,這不是直接的,因爲可以通過多種方式定義模板和視圖模型。 我建議看看https://github.com/knockout/knockout/blob/master/src/components/componentBinding.js,看看它是如何完成的(從第38行開始)。
我希望這適用於您,否則您可以考慮其他選項,例如在組件綁定的代碼中動態創建div元素,其中組件的名稱和參數綁定到視圖模型的屬性。然後將此視圖模型綁定到剛剛創建的div元素。這應該工作「代碼只」代碼比其他路線少得多。
相關問題
- 1. 使用JavaScript KnockoutJS
- 2. 使用JavaScript加載文件
- 3. Knockoutjs組件不能使用js功能
- 4. 使用knockoutJS在頁面加載時觸發點擊事件
- 5. Knockoutjs組件在回調後加載了所有foreach中的項
- 6. 在JavaScript中使用javascript引用KnockoutJs值
- 7. knockoutjs組件params undefined
- 8. knockoutjs加載內部foreach
- 9. 如何使用javascript或jquery卸載Firefox附加組件
- 10. 使用Javascript加載本地JSON文件
- 11. 使用javascript加載XSL文件
- 12. 使用Javascript加載外部文件
- 13. 使用javascript加載本地文件
- 14. 使用Javascript加載多個CSV文件
- 15. 使用turbolink插件加載javascript
- 16. 使用javascript加載xml文件
- 17. 使用JavaScript動態加載CSS文件
- 18. 使用javascript加載值到asp.net控件
- 19. 使用jquery從javascript加載.txt文件
- 20. 使用javascript檢查flash文件加載
- 21. 使用Rails加載JavaScript文件
- 22. 使用asp.net加載頁面加載javascript
- 23. CakePHP在需要時加載javascript組件
- 24. 將XML文件加載到JavaScript數組
- 25. 使用javascript或jquery預加載和加載頁面事件
- 26. symfony:使用AJAX加載組件問題
- 27. 不能使用加載組件angularjs2
- 28. 加載組件使用展開 - 歸檔
- 29. 加載組件
- 30. 使用KnockoutJS創建可重複使用的組件
'