javascript - 模型在命名空间外不可访问

标签 javascript knockout.js

我试图将我的 knockout 数组绑定(bind)到一个表,但无法访问 javascript 函数之外的模型。

这是我的javascript代码

(function (conf, $, undefined) {

    var model = { menuRows : [], orderRows : [], menuDetails : null };

    conf.getMenuRows = function () {

        $.get("/orderpackage/row", function (data) {
            model.orderRows = data;
        });

    };

    conf.getMenuRows();
    ko.applyBindings(model);

}(window.conf = window.conf || {}, jQuery));

这是 HTML

<table class="table table-hover table-bordered">
                            <thead>
                                <tr>
                                    <th>Beskrivning</th>
                                </tr>
                            </thead>
                            <tbody data-bind="foreach: model.orderRows">
                                <tr>
                                    <td data-bind="text: description"></td>
                                </tr>
                            </tbody>
                        </table>

未找到 model.orderRows。

无法理解我在这里做错了什么。

最佳答案

您的模型没有使用可观察数组函数。您将需要以下内容:

function Model() {
 var self = this();

 self.menuRows = ko.observableArray();
 self.orderRows = ko.observableArray();
 self.getMenuRows = function() {
  $.get("/orderpackage/row", function (data) {
       self.orderRows = ko.observableArray(data)
    });
 ....
}

然后就可以调用了

(function (conf, $, undefined) {

var model = Model();


model.getMenuRows();
ko.applyBindings(model);

}(window.conf = window.conf || {}, jQuery));

那么您应该能够像在 HTML 中那样进行绑定(bind)。 更多教程可以在这里找到:http://learn.knockoutjs.com/

如果您随后想要绑定(bind)到每个数组元素中的项目,例如描述,您将需要为该行创建一个额外的模型定义并将从您的 api 返回的数据解析为模型类型。

关于javascript - 模型在命名空间外不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44285755/

相关文章:

javascript - Foreach 与 'afterAdd' 的绑定(bind)会导致整个模板在插入时再次绘制

javascript - Knockout 3.2 - AMD 加载组件之间基于 'if' 的转换

javascript - 使用下拉菜单更改图像

Javascript - 在文本上显示图像

javascript - JS中如何将字符串转换为数组,溢出不起作用

javascript - 我的 GAS 脚本无法创建没有任何错误的事件

javascript - 将图像的主色设置为子 div - jquery.fillcolor.js

knockout.js - 将 Knockout 可观察变量重置为其起始值

javascript - KnockoutJS - Base64 动画 gif 重启动画

javascript - createElement 函数不适用于 MAC Safari