Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Knockout JS中强制应用绑定_Javascript_Knockout.js - Fatal编程技术网

Javascript 如何在Knockout JS中强制应用绑定

Javascript 如何在Knockout JS中强制应用绑定,javascript,knockout.js,Javascript,Knockout.js,我想刷新页面的模型绑定。正如文档所说,我使用applyBindings方法。 此外,我需要在一个页面上使用几个视图模型。为此,我在绑定时使用object wrapper+“with”关键字: ko.applyBindings({ model1: {...}, model2: {...} }); <div data-bind="with: $root.model1"> ... </div> <div data-bind="with: $root.model2">

我想刷新页面的模型绑定。正如文档所说,我使用applyBindings方法。 此外,我需要在一个页面上使用几个视图模型。为此,我在绑定时使用object wrapper+“with”关键字:

ko.applyBindings({ model1: {...}, model2: {...} });

<div data-bind="with: $root.model1"> ... </div>
<div data-bind="with: $root.model2"> ... </div>
}))

2)不起作用:

$("#b1").click(function () {
ko.applyBindings({
    myModel1: {
        MyText: ko.observable("Some text")
    },
    myModel2: {
        MyText: ko.observable("Some text")
    }
});
$("#b1").click(function () {
ko.applyBindings({
    myModel1: {
        MyText: ko.observable("Some text")
    }
});
}))

据我所知,我们无法以这种方式绑定其他视图模型。我还尝试使用“ko.cleanNode()”方法,但它也不起作用。 存储在中的代码的完整示例


你能告诉我如何在页面上添加额外的视图模型吗?谢谢大家!

尝试不强制绑定,但更改已绑定模型的值:

var viewModel = function () {
    var self = this;

    self.myModel1 = ko.observable( {
        MyText: ko.observable("Some other text")
    });

    self.myModel2 = ko.observable({
        MyText: ko.observable("Some other text 2")
    });


    self.clickAction = function() {
        //do the trick of assigning value
        self.myModel1 ({
            MyText: ko.observable("Some another text")
        });
    };
};

ko.applyBindings(new viewModel());   

我的解决方案是:


有什么意见吗?

没有,很遗憾。我不知道在未来的第一次applyBindinds调用中我需要多少视图模型。你想过使用observableArray of ObservableView模型吗?我无法想象它是如何工作的。你能提供一小段代码吗?这应该很好,如果我早点看到这个问题的话,这应该是我的答案。绑定在理论上可以实现吗?e、 g.实际的#元素不存在,直到稍后的ajax更新
$("#b2").click(function () {
    ko.applyBindings({
        myModel1: {
            MyText: ko.observable("Some other text")
        },
        myModel2: {
            MyText: ko.observable("Some other text 2")
        }
    });
});
var viewModel = function () {
    var self = this;

    self.myModel1 = ko.observable( {
        MyText: ko.observable("Some other text")
    });

    self.myModel2 = ko.observable({
        MyText: ko.observable("Some other text 2")
    });


    self.clickAction = function() {
        //do the trick of assigning value
        self.myModel1 ({
            MyText: ko.observable("Some another text")
        });
    };
};

ko.applyBindings(new viewModel());