knockout.js - knockout compute function - Cannot read property 'price' of null -


i trying access property of object, know object exists (and has property need) can log console.

however when try , access it, says cannot read property 'price' of null.

i c# developer , little confused must doing wrong not know what? screenshot, can see object returned.

my code below:

self.total = ko.computed(function(){     var total = 0;           var selectedservername = this.selectedserver();     var selectedserverobject = ko.utils.arrayfirst(this.server, function(server){         console.log("server.name = " + server.name);         console.log("selectedservername = " + selectedservername);         var servercompare = (server.name == this.selectedserver());         console.log("servercompare " + servercompare);     }, this);      var selectedosname = this.selectedos();     var selectedosobject = ko.utils.arrayfirst(this.os, function(os){         console.log("os.name = " + os.name);         console.log("selectedosname = " + selectedosname);         var oscompare = (os.name == this.selectedserver());         console.log("oscompare " + oscompare);     }, this);      total = total + selectedserverobject.price + selectedosobject.price;      return total; },this); 

update

my updated fiddle here: fiddle here

thanks d.raev appears when second log line added console.log(selectedserverobject.price, arrayfirst function starts being called selectedserver = undefined.

server.name = dell r210 selectedservername = undefined servercompare false server.name = dell r710 selectedservername = undefined servercompare false server.name = dell r720 dual cpu selectedservername = undefined servercompare false os.name = windows standard selectedosname = undefined oscompare false os.name = windows enterprise selectedosname = undefined oscompare false os.name = centos linux selectedosname = undefined oscompare false os.name = debian selectedosname = undefined oscompare false 1.  uncaught typeerror: cannot read property 'price' of null  

the undefined value selectedosname or selectedservername causing total fail, reason being set undefined?

your script runs 2 times function, adding second debug shows more clear:

var selectedserverobject = ko.utils.arrayfirst(this.server, function(server){     console.log("server.name = " + server.name);     console.log("selectedserver = " + this.selectedserver());     return server.name ==  this.selectedserver(); }, this);  

output:


server.name = dell r210
selectedserver = undefined
server.name = dell r710
selectedserver = undefined
server.name = dell r720 dual cpu
selectedserver = undefined
null (selectedserverobject)
...
server.name = dell r210
selectedserver = dell r210
object {name: "dell r210", specification: "1 x 2.4ghz quad core cpu 4gb ram
2 x 300gb sas 15k", price: 100}


just add check if selectedserverobject set .. or find why called 2 times:

example:

if(selectedserverobject){    total = total + selectedserverobject.price; } 

Comments

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -