导航到viewModel并传递Model值

时间:2013-10-10 15:34:48

标签: json viewmodel durandal

我从JSON中获取服务器中的数据,然后将其转换为viewModal。现在我使用return router.navigate('results')加载新视图。但同时我想传递我从JSON对象创建的viewModel以传递给此视图。默认情况下,“结果”viewModel被调用但它具有空值。 一个小的代码片段对我来说很有帮助,因为我是Durandal JS的新手。

3 个答案:

答案 0 :(得分:1)

我的最佳答案是将这些信息存储在一个单独的模块中,如下所示:

storage.js

define(function(require) { return []; });

viewmodel.js

define(['storage'], function(storage) {

    $.get('uri', function(data) {
        data.forEach(function(obj) {
            storage.push(obj);
        });
    }); 
});

这不是最优雅的解决方案。我真的很感兴趣,如果有一种干净的方法可以在激活时从单独的视图模型传递数据,但到目前为止我还没有找到。

答案 1 :(得分:1)

终于结束了这样的事情。

  1. 在我想要导航的模块中,我创建了一个“Initialize”函数,它接受一个JSON对象。使用此JSON对象,我初始化了viewModel中的所有属性。
  2. 从我必须在那里导航的页面,我在下一个要导航的模块上执行了“require”。然后我调用了“Initialize”方法并传递了我的JSON对象。
  3. 在此之后,我使用router.navigate方法去了那个模块。
  4. 这种方式当我导航时,我得到了我想要从一个视图传递到另一个视图的所有值。希望这种方法能够帮助其他人。

答案 2 :(得分:0)

Matthew的答案肯定与我目前的方式类似,一旦数据保存在您的单独模块中(我有一个名为modules / data / someDataStorage的路径),您可以使用事件或者可以观察到的敲除将数据更新到您的视图模型。

在您的情况下,我会对您的共享模块进行更新,以存储有关您的请求的信息,然后激活结果模块,从该共享模块获取数据。