0

我在使用带有 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"}   
    ]
    }
}

有什么见解吗?谢谢!(抱歉,如果我问的问题不好,请告诉我是否需要提供更多信息!)

4

0 回答 0