如何在Knockout组件中访问viewModel?

时间:2017-08-16 19:01:10

标签: javascript ajax knockout.js

我正在尝试在文档准备好的情况下预先填充淘汰组件。

我写了以下代码:

static mapping = {
    tablePerConcreteClass true
}

如何从查找组件访问底层Viewmodel以从getJSON函数内部设置数据?

1 个答案:

答案 0 :(得分:1)

对于Jeroen而言,解决方案如下所示:

function FindingViewModel() {
    let self = this;

    self.findings = ko.observableArray();


    self.addFinding = function () {
        self.findings.push(new Finding(self.findings().length + 1, ""));
    };

    self.removeFinding = function (finding) {
        self.findings.remove(finding);
        ko.utils.arrayForEach(self.findings(), function (value, i) {
            self.findings.replace(value, new Finding(i + 1, value.trigger()));
        });
    };

    self.update = function (data) {
        let findings = data.findings;
        for (let index = 0; index < findings.length; ++index) {
            let finding = findings[index];
            self.findings.push(new Finding(self.findings().length + 1, finding.trigger));
        }

    };

    $.getJSON("/_get_findings", function (data) {
        self.update(data);
    });
}
相关问题