【问题标题】:KnockoutJS - creating object doesn't workKnockoutJS - 创建对象不起作用
【发布时间】:2013-10-20 15:51:07
【问题描述】:

我正在做一个带有菜单和子菜单的导航列表。

我有以下结构:

function Menu(navigation) {

    this.NavigationUrl = ko.observable(navigation.NavigationUrl);
    this.NavigationTitle = ko.observable(navigation.NavigationTitle);
    this.NavigationDescription = ko.observable(navigation.NavigationDescription);

    var mappedChildren = ko.utils.arrayMap(navigation.Children, function (child) {
        return new Menu(child);
    });

    this.Children = ko.observableArray(mappedChildren);
}

function DashboardViewModel() {

    var self = this;
    self.LoggedUser = ko.observable("");
    self.Navigations = ko.observableArray([]);

    $.get('/Home/DashboardDependencies', {}, function (result) {

        self.LoggedUser(result.LoggedUser);

        var mappedNavigations = ko.utils.arrayMap(result.Navigations, function (item) {
            var menu = new Menu(item);

            // When I alert item, the result appears properly:
            // { "NavigationTitle": "blah", "NavigationDescription": "bleh" [...] }
            alert(JSON.stringify(item));

            // But when I alert the new menu object, the result doesn't appear:
            // Just: "{}"
            alert(JSON.stringify(menu));

            return menu;
        });
        self.Navigations = mappedNavigations;
    });
}

ko.applyBindings(new DashboardViewModel());

所以,检查一下。当我尝试提醒 item 变量时,结果会正确显示。当我尝试提醒新的菜单对象时,结果只显示{}。为什么会这样?

谢谢大家的帮助!

【问题讨论】:

标签: javascript asp.net-mvc-4 knockout.js


【解决方案1】:

self.Navigations = ..不更新现有的可观察数组。因此,视图绑定的 observable 数组永远不会更新,视图也永远不会更新。

请改用self.Navigations(..)。

【讨论】:

  • 像魅力一样工作!谢谢!
猜你喜欢
  • 2012-06-13
  • 2017-05-03
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
相关资源
最近更新 更多