Initializing
Liveweave
Web
expand_more
home
Home
data_object
CSS Explorer
arrow_outward
Palette
Color Explorer
arrow_outward
Polyline
Graphics Editor
arrow_outward
outbox_alt
Generative AI
arrow_outward
frame_source
Python Playground
New
arrow_outward
build
Tools
expand_more
restart_alt
Load "Hello Weaver!"
post_add
Generate Lorem ipsum...
code
Format HTML
code_blocks
Format CSS
data_object
Format JavaScript
library_add
Library
expand_more
A
Algolia JS
Animate CSS
Apex Charts JS
B
Bulma CSS
Bootstrap
C
Chart JS
Chartist
Create JS
D
D3
Dojo
F
Foundation
Fullpage JS
G
Granim JS
Google Charts
H
Halfmoon
J
jQuery
M
Materialize
Moment JS
Masonry JS
Milligram CSS
P
Pure CSS
Primer CSS
Popper JS
Pattern CSS
Picnic CSS
R
React JS
Raphael JS
Raisin CSS
S
Semantic UI
Skeleton CSS
Spectre CSS
Tachyons CSS
T
Tailwind
Three JS
U
UI Kit
Vis JS
W
Water CSS
download
Download
expand_more
developer_mode
Download as HTML
folder_zip
Download as .ZIP
cloud_upload
Save
account_circle
Login
settings
Settings
expand_more
14
px
Live mode
Night mode
Line number
Mini map
Word wrap
sync_alt
Reset Settings
smart_display
Run
<!DOCTYPE html> <html> <head> <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.js"></script> <title>Knockout component</title> </head> <body data-bind="with: model"> <div data-bind="text: title"></div> <div data-bind="foreach: items"> <div data-bind="text: Name"></div> <div data-bind="text: price"></div> <custom-element params="method: $parent.removeItem"></custom-element> </div> </body> </html>
.lw { font-size: 60px; }
var viewModel = function() { var model = {}; model.items = ko.observableArray([]); //when thing is observable model.title = ko.observable("This is the title"); var itemOne = { Name: "product One", price: 10 }; var itemTwo = { Name: "product Two", price: 20 }; model.items.push(itemOne); model.items.push(itemTwo); model.removeItem = function(obj){ debugger; model.items.remove(obj); }; return { model: ko.observable(model) }; }; ko.components.register('custom-element', { viewModel: function(params) { this.nestedMethod = function (){ var parameter = ko.contextFor(arguments[1].target).$parent; params.method(parameter); } }, template: '<button data-bind="click: nestedMethod">remove item</button>' }); ko.applyBindings(new viewModel());