2012-12-29 113 views
1

我有一個非常簡單的問題,但不明白我缺少什麼。 下面是代碼:KnockoutJS獲得物業價值

$(document).ready(function() { 
var viewModel = { 
    test: ko.observable(null) 
} 
var obj = { 
    name: "name123" 
} 
viewModel.test(obj);  
ko.applyBindings(viewModel.test, document.getElementById("a")); 
alert(viewModel.test.name()); 
});​ 

鏈接的jsfiddle:http://jsfiddle.net/bwkAB/ 爲什麼我不能得到name屬性值?

UPDATE: 應該 viewModel.test()命名

+0

小提琴似乎工作得很好,或...? –

+0

該警報不適用於我。在mozilla中,它說:「TypeError:viewModel.test.name不是函數」 – d1mitar

+0

@WernerVesterås警告不起作用,因爲user1025981沒有創建子對象observable的屬性,但是調用成員'name'作爲方法就好像它是可觀察的 – Gent

回答

2

以下是更正jsfiddle,你需要做的子對象屬性觀察到,以綁定到它。以及添加綁定,以幫助範圍在HTML

$(document).ready(function() { 
    var viewModel = { 
     test: ko.observable(null) 
    } 
    var obj = { 
     name: ko.observable("name123") 
    } 
    viewModel.test(obj);  
    ko.applyBindings(viewModel); 
    alert(viewModel.test().name()); 
});​ 
+0

沒有名稱上的括號正在按預期工作。謝謝。 – d1mitar

+0

@ user1025981請檢查新的jsfiddle,瞭解如何簡化信息,取消括號並將屬性保留爲靜態而不是可觀察屬性的一個很好的示例,但我認爲您更喜歡新示例,還請注意HTML'與:'綁定 – Gent

+0

我明白,但情況如下: 我做ajax請求並獲得一個對象數組。我在這個數組的移動應用程序中創建一個列表視圖。我連接列表項的單擊事件,當單擊列表項時,我將它保存在一個對象 - selectedItem中並轉換到詳細信息視圖頁面。然後我綁定這個選定項目的詳細信息頁面。但所選項目的屬性是不可觀察的,因爲它們來自請求..有什麼,我可以做這些屬性? – d1mitar