Knockout:是否可以将值从一个视图模型传递到另一个视图模型

时间:2018-05-19 12:09:51

标签: knockout.js

我在我的body标签中使用了两个viewModel来控制2个独立的div,我试图将值传递给第二个视图模型的observable函数,但它似乎没有用。甚至可以让两个视图模型相互作用?

这是代码:

   function friendsOnlineModel(data,mapping) {

    //saveUserDetailsOffline(data.user);

    onlineFriends = ko.mapping.fromJS(data,mapping);


    onlineFriends.startChat = function() {


        new chatModel().username("olu");

    };

    onlineFriends.sending_message = ko.observable("");

    return onlineFriends;
}

function chatModel() {

   var chat = this;

   chat.username = ko.observable('kunle');

   return chat;

}

1 个答案:

答案 0 :(得分:0)

不要将淘汰赛与黑魔法混为一谈。 当然它们可以是intercat,一个observable只不过是一个简单的javascript函数,所以假设你持有它的引用,你可以把它传递给你喜欢的任何地方。为此,您应该初始化viewModel并保留对它们的引用。 即: 如果你想让你的“friendsOnlineModel”与你的chatModel进行通信,你应该在他们之间定义依赖关系,谁需要谁,谁应该作为参数传递给谁。

所以从本质上讲你可以做这样的事情:

   function friendsOnlineModel(data,mapping,chatModel) {

    //saveUserDetailsOffline(data.user);

    onlineFriends = ko.mapping.fromJS(data,mapping);


    onlineFriends.startChat = function(userName) {
        chatModel.username(userName);

    };

    onlineFriends.sending_message = ko.observable("");

    return onlineFriends;
}

function chatModel() {

   var chat = this;

   chat.username = ko.observable('kunle');

   return chat;

}

var chatModel = new chatModel();
var friendsOnModel = new friendsOnlineModel(data,mapping,chatModel);

请告诉我这是否有帮助!