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

Javascript 模型不可在命名空间外访问,javascript,knockout.js,Javascript,Knockout.js,我试图将我的knockout数组绑定到一个表,但无法到达javascript函数之外的模型 这是我的javascript代码 (function (conf, $, undefined) { var model = { menuRows : [], orderRows : [], menuDetails : null }; conf.getMenuRows = function () { $.get("/orderpackage/row", function

我试图将我的knockout数组绑定到一个表,但无法到达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中那样进行绑定。 更多教程可在此处找到:


然后,如果要绑定到每个数组元素(例如描述)中的项,则需要为行创建附加的模型定义,并将api返回的数据解析为模型类型

我找到了一个好办法

(function (conf, $, undefined) {

    var model = {
        menuRows: ko.observableArray([]),
        order: ko.observableArray([]),
        menuDetails: ko.observable()
    };

    conf.getMenuRows = function () {
        $.ajax({
            url: "/orderpackage/row",
            cache: false,
            type: "GET",
            datatype: "json",
            contenttype: "application/json;utf8"
        }).done(function (data) {
            model.order(data.model);
        });
    };

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

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

这绝对是javascript代码,而不是java:)