http://stackoverflow.com/questions/42964923/knockout-js-calling-a-property-from-outside-the-view-model-always-null
by jlspake
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.1/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min.js"></script>
<div>
<button id="newRoom" type="button" data-bind="click: addRoom">New Room</button>
</div>
JavaScript
var jsonData = {
Rooms: [
'room 1', 'room 2'
]
};
var ViewModel = function(data) {
var self = this;
ko.mapping.fromJS(data, {}, self);
this.addRoom = function() {
self.Rooms.push(new Room());
};
this.addImageUrl = function(roomId, imageUrl) {
debugger;
var room = ko.utils.arrayFirst(self.Rooms(), function(roomId) {
return room.RoomID === roomId;
});
};
}
var Room = function() {
var self = this;
}
var viewModel = new ViewModel(@Html.Raw(jsonData));
ko.applyBindings(viewModel);
setTimeout(function(){
var file = { url: 'localhost' };
var roomId = $("#hdnRoomId").val();
viewModel.addImageUrl(roomId, file.url);
}, 1000)