如何在页面加载时添加json数据而不是按钮点击?
http://jsfiddle.net/infatti/jWTtb/
// Here's my data model
var ViewModel = function (firstName, lastName) {
var self = this;
self.firstName = ko.observable(firstName);
self.lastName = ko.observable(lastName);
self.loadJson = function () {
$.getJSON("http://echo.jsontest.com/firstName/Stuart/lastName/Little",
function (data) {
self.firstName(data.firstName);
self.lastName(data.lastName);
});
};
};
var vm = new ViewModel();
ko.applyBindings(vm); // This makes Knockout get to work
答案 0 :(得分:11)
你可以添加
self.loadJson();
直接在声明函数的代码之后,或者调用
vm.loadJson();
应用了敲除绑定后。
答案 1 :(得分:4)
除了@Tim B James的回答之外,我看到的一个技巧非常好的是将loadJson
函数绑定到可见绑定,这使得它在页面加载后启动。
我已经更新了你的小提琴,你可以看到:http://jsfiddle.net/jWTtb/5/
<div data-bind="visible: loadJson() || true">
<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>
</div>
答案 2 :(得分:0)
你可以添加
$(function()
{
vm.loadJson();
});
代码末尾。
这样你就可以在页面加载时运行代码,并且仍然可以点击你的代码。此外,您可以删除data-bind="click: loadJson"
,如果您确实不需要,也会删除点击按钮上的操作。
这是一个有效的例子。 http://jsfiddle.net/jMvMm/1/