我想訪問一個對象的屬性,我知道該對象存在(並具有我需要的屬性),因爲我可以將它記錄到控制檯。淘汰計算功能 - 無法讀取屬性'價格'null
但是,當我嘗試訪問它時,它說無法讀取null的屬性「價格」。
我是C#開發人員,很困惑我一定在做錯事,但我不知道是什麼?從我的屏幕截圖中,您可以看到返回的對象。
我的代碼如下:
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 is " + 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 is " + osCompare);
}, this);
total = total + selectedServerObject.price + selectedOsObject.price;
return total;
},this);
更新
我更新的小提琴是在這裏:當第二行紀錄中添加console.log(selectedServerObject.price
看來fiddle here
感謝d.raev, arrayFirst函數開始被調用selectedServer = undefined
。
server.name = DELL R210
selectedServerName = undefined
serverCompare is false
server.name = DELL R710
selectedServerName = undefined
serverCompare is false
server.name = DELL R720 Dual CPU
selectedServerName = undefined
serverCompare is false
os.name = Windows Standard
selectedOsName = undefined
osCompare is false
os.name = Windows Enterprise
selectedOsName = undefined
osCompare is false
os.name = CentOS Linux
selectedOsName = undefined
osCompare is false
os.name = Debian
selectedOsName = undefined
osCompare is false
1. Uncaught TypeError: Cannot read property 'price' of null
從selectedOsName undefined值或selectedServerName導致總失敗,什麼是他們被設置爲未定義的原因是什麼?
'console.log(selectedServerObject.price)'的錯誤意味着selectedServerObject爲null。所以也許你在對象中的那一行的任何上下文都被改變了。 – Ally
'this.selectedServer()'繼續返回'undefined'。你確定這是正確的嗎? –
請檢查當前的小提琴,http://jsfiddle.net/g18c/SMUSv/5/,對象{名稱:「DELL R210」,規格:「1 x 2.4GHz四核CPU
4GB RAM
2 x 300GB SAS 15k「,價格:100}'被記錄到第205行的控制檯上 – g18c