【问题标题】:Connecting views in Durandal JS在 Durandal JS 中连接视图
【发布时间】:2014-03-05 17:12:00
【问题描述】:

我对@9​​87654321@ 很陌生,所以这可能很明显,但是我如何在两个viewmodels 之间链接逻辑?

假设我在一个只有项目列表的页面上。我深入研究加载下一页的项目。现在在激活方法中,我真的很想执行下一个/上一个逻辑...

activate: function(data, previousViewModel) {
    var Id = Number(data);
    // Load data

    var entityInTable = ko.utils.arrayFirst(previousViewModel.table.data(), function (item) {
        return item.Id() == Id;
    });
    var i = previousViewModel.table.data().indexOf(entityInTable);
    vm.previous = previousViewModel.table.data()[i - 1];
    vm.next = previousViewModel.table.data()[i + 1];
}

这可能/容易吗?谢谢。

编辑:目前我通过将视图 URL 传递给表格控件来路由到此视图。

Table.prototype.openItem = function(item) {
    m_router.navigate(this.detailsUrl + "/" + item.Id());
}

理想情况下,我想知道激活时我从哪个视图路由,这样我就可以调整生成的视图外观和逻辑以将其引导到那个位置。

【问题讨论】:

    标签: javascript durandal single-page-application


    【解决方案1】:

    是的,这既可行又相当容易。您可以 require() 之前的另一个视图模型,也可以简单地“新建”该视图模型的一个实例,为其设置一个属性。如果您正在更改页面,则无法真正将视图模型传递给下一个,但如果您正在组合视图模型,则可以。

    如果您详细说明一个视图模型如何启动下一个视图模型,我可以进一步详细说明。

    【讨论】:

    • 好的,我已经更新了。理想情况下,我真的希望有一些逻辑来链接视图,因为如果我来到一个简单的列表,我想显示所有结果,而如果我单击一个按钮进行查找,我想调整列表过滤器并使选择影响上一个视图。
    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多