-1

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

4

3 回答 3

1

终于弄成这样了。

  1. 在我要导航的模块中,我创建了一个接受 JSON 对象的“初始化”函数。使用这个 JSON 对象,我初始化了 viewModel 中的所有属性。
  2. 从我必须导航到那里的页面上,我在接下来要导航的模块上做了一个“要求”。然后我调用了“Initialize”方法并传递了我的 JSON 对象。
  3. 在此之后,我使用 router.navigate 方法进入该模块。

这样,当我导航时,我得到了我想从一个视图传递到另一个视图的所有值。希望这种方法对其他人有所帮助。

于 2014-03-03T21:44:28.937 回答
1

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

存储.js

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

视图模型.js

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

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

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

于 2013-10-10T16:56:12.890 回答
0

Matthew 的回答肯定与我目前的做法相似,一旦数据保存在您的单独模块中(我有一个名为 modules/data/someDataStorage 的路径),您可以使用事件或可观察的淘汰赛来制作数据更新到您的视图模型。

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

于 2013-11-28T20:55:03.997 回答