我试图将我的 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/