我无法使用knockout observable创建双向绑定。数据正在初始化,但在点击功能期间更新值(UI中的x)是我发现困难的地方。任何帮助都会很棒,因为我是新手,从客户角度转换为角度转换 演示:https://jsfiddle.net/govardhan_s92/abq9j5t4/1/
提前致谢。
HTML:
<div class='liveExample'>
<p data-bind="text:x,click:test()"></p>
</div>
使用Javascript:
var ViewModel = function() {
this.x=ko.observable("");
this.x = "something 1";
this.test = function() {
this.x = "something 2"
}
};
ko.applyBindings(new ViewModel());
答案 0 :(得分:3)
首先,您将this.x
指定为ko.observable
(这使其成为ko.observable函数的函数引用):
this.x = ko.observable("");
在下一行中,您告诉this.x
而不是成为常规字符串变量,会覆盖 ko.observable
函数引用:
this.x = "something1";
如果你想更新一个可观察变量的值(记住:它是一个函数!),你需要将它作为函数参数传递给变量,而不是将新值赋给变量(覆盖 the observable):
this.x("something1");
此外,您的点击约束应为click: test
而不是click: test()
,否则您将分配给点击处理程序,无论执行text()
返回。
<p data-bind="text: x, click: test"></p>
答案 1 :(得分:1)
当你将ko.observable()分配给x时,this.x成为一个接受要更新的新值的函数
你需要这样做
var ViewModel = function() {
this.x=ko.observable("");
this.x("something 1");
this.test = function() {
this.x("something 2")
}
};
ko.applyBindings(new ViewModel());