调用ViewModel范围之外的函数

时间:2018-01-24 21:56:20

标签: javascript knockout.js

我在视图模型范围之外有以下代码,我试图通过点击绑定来调用它。

function Policy(data) {
    var self = this;
    Object.keys(data).forEach(function(prop) {
        self[prop] = data[prop];
    });

    var generate = function() {
        console.log("test");
        // window.open("www.google.com")
        // window.open("{{ url_for('genreport') }}/" + qvm.letter() + '/' + self.id);
    }

}

但是,当我尝试调用函数时,我得到的生成没有定义。我绑定的代码在

之下
<button class="btn btn-lg btn-primary btn-block" data-bind="click: function(){ generate() }">Generate</button>

我试过调用Policy.generate,$ data.generate,我无法调用此函数。

我知道这个问题很简单,我可能会错过一些应该粉碎我脸上的东西,但我不知道,任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:1)

修复只是将所述函数放在我的ViewModel的范围内,现在已修复。

答案 1 :(得分:0)

您已使用本地变量声明generate。它在Policy范围之外是不可见的。如果你想创建Policy.generate,你应该这样做:

Policy.generate = function () {