knockout.js在页面上加载json

时间:2013-04-30 21:08:13

标签: jquery knockout.js

如何在页面加载时添加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

3 个答案:

答案 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/