下面是我想要與knockoutjs做一個更簡化的示例:是否有可能讓knockoutjs更新'initialdata'對象?
<!DOCTYPE HTML>
<html>
<head>
<title>test</title>
<script type="text/javascript" src="https://github.com/downloads/SteveSanderson/knockout/knockout-2.0.0.debug.js"></script>
<script type="text/javascript">
var derp = { "foo": 1, "bar": 2 };
window.onload = function() { go(); }
function go()
{
var ViewModel = function(foobar)
{
this.foo = ko.observable(foobar.foo);
this.bar = ko.observable(foobar.bar);
}
ko.applyBindings(new ViewModel(derp));
}
</script>
</head>
<body>
<input data-bind="value: foo"/>
<input data-bind="value: bar"/>
<button onclick="go();">Go</button>
</body>
</html>
這段代碼的目的是讓knockoutjs在derp
更新的值,而不是視圖模型的內部副本。
有沒有辦法用淘汰賽輕鬆完成這件事,還是我吠叫錯了樹?
編輯上下文:
這是從一個更大的應用程序撲殺。我的意圖是使用敲除來顯示和編輯一個大的,毛茸茸的JavaScript對象的屬性。這些對象由用戶動態實例化,並可以隨意切換。
在我發現找到挖空之前,我手動創建了DOM元素來顯示和編輯每個對象,這些對象很麻煩和繁瑣。我有一些在C#中通過WPF使用MVVM的經驗,並且更願意使用這種方法。我對knockout最初的理解是,它會這樣做,沒有意識到ViewModel複製了ko.observable
*所捕獲的值。 ViewModel對我來說仍然有用,因爲它允許我有條件地公開和簡化對想要編輯的成員的訪問。
我只是好奇你爲什麼要嘗試使用knockoutjs而不想使用模型。我的意思是你可以使用普通的javascript來修改原始的derp ob,但我不認爲我完全理解你爲什麼要努力解決ko.js.也許我需要更多關於你正在努力完成的事情。 – Etch 2012-02-08 19:45:57
當然,我會編輯問題以添加一些上下文。 – luke 2012-02-08 19:47:21