【问题标题】:Knockout: is it possible to pass values from one viewmodel to another淘汰赛:是否可以将值从一个视图模型传递到另一个视图模型
【发布时间】:2018-10-29 17:05:34
【问题描述】:

我在 body 标记中使用了两个 viewModel,用于控制 2 个单独的 div,我试图将一个值传递给第二个 view Model 可观察函数,但它似乎不起作用。甚至可以让两个视图模型交互?

这是代码:

   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;

}

【问题讨论】:

标签: knockout.js


【解决方案1】:

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

所以本质上你可以这样做:

   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);

如果这有帮助,请告诉我!

【讨论】:

    猜你喜欢
    • 2014-10-08
    • 2014-07-28
    • 2014-04-01
    • 2016-03-11
    • 2013-01-26
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    相关资源
    最近更新 更多