1

我怎样才能使它在页面加载而不是按钮单击时添加 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
4

3 回答 3

11

你可以添加

self.loadJson();

直接在声明函数的代码之后,或调用

vm.loadJson();

在您应用了淘汰赛绑定之后。

于 2013-04-30T21:16:37.973 回答
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>
于 2013-04-30T21:25:52.050 回答
0

你可以添加

$(function()
{
    vm.loadJson(); 
});

在您的代码末尾。这样,您既可以在页面加载时运行代码,又可以在点击时获得它。data-bind="click: loadJson"此外,如果您真的不需要它,您可以删除and 也将删除单击按钮上的操作。

这是一个工作示例。http://jsfiddle.net/jMvMm/1/

于 2013-04-30T21:20:06.490 回答