我在使用带有 pager.js 和 knockout.js 的嵌套对象时遇到问题。
我有一个单页视图模型,它在函数中加载子页面的信息,并且在“withOnShow”数据绑定中调用该函数。
子页面本身加载良好,但我无法访问使用“with”数据绑定传递给子页面的对象的任何元素。
我尝试通过以下方式加载元素:
- $data.etc
- $data.notifications.etc
- 通知.notifications.etc
- 通知等
- 通知()等
- 通知().notifications.etc
- self.notifications.notifications.etc
- self.notifications().notifications.etc
我还尝试将我的可观察元素的类型从“ko.observable([])”更改为“ko.observableArray([])”,以及在使用和不使用“with”绑定之间切换。相关代码如下(这是在我的主页jsp中的一个脚本标签中的viewmodel函数中):
self.notifications = ko.observable({});
self.loadNotifications = function(callback, page) {
$.getJSON("${pageContext.request.contextPath}/static/json/notificationtest.json", function(notifications) {
ko.mapping.fromJS(notifications, {}, self.notifications);
callback(self);
console.log(self.notifications());
});
}
相关的 HTML 如下(这是在我的主页 jsp 中):
<div data-bind="page: {id: 'profile', role: 'start'}">
<div data-bind="page: {id: 'notifications', sourceOnShow: '${pageContext.request.contextPath}/action/secured/user/profile/notifications',
title: 'Notifications', with: self.notifications, withOnShow: loadNotifications}">
</div>
我正在尝试做的一个示例(此代码在我的子页面 jsp 中):
<div data-bind="if: $data.manager">
<!-- then one kind of view with a lot of stuff going on happens -->
<div data-bind="ifnot: $data.manager">
<!-- otherwise this view pops up -->
这只是我尝试访问数据的一种方式。我还可以访问其他一些布尔值,以及一些用于填充表单的数组。JSON如下:
{
"notifications": {
"sameList": false,
"displayMessage1": true,
"displayMessage2": false,
"displayMessage3": true,
"dm1Global": false,
"dm2Global": true,
"dm3Global": true,
"manager": true,
"contacts": [
{"name": "NAME1"}, {"name": "NAME2"}, {"name": "NAME3"}
],
"contacts1": [
{"name": "NAME4"}
],
"contacts2": [
""
],
"contacts3": [
{"name": "NAME5"}, {"name": "NAME6"}
]
}
}
有什么见解吗?谢谢!(抱歉,如果我问的问题不好,请告诉我是否需要提供更多信息!)