gpt4 book ai didi

javascript - knockout - 通知属性(property)变更

转载 作者:行者123 更新时间:2023-11-28 15:50:24 28 4
gpt4 key购买 nike

我尝试使用像 WPF-MVVM 这样的 Knockout。
WPF 中,有一个选项可以在属性更改时通知虚拟机。
例如:如果我有一个文本框,我可以使用 UpdateSourceTrigger=PropertyChanged 来通知虚拟机每次点击。

<Grid DataContext="MyVM">
<TextBox Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"/>
</Grid>

在 Knockout 中,我构建了这个简单的应用程序:

虚拟机:

function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");

this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName();
}, this);


}

ko.applyBindings(new AppViewModel());

查看:

<p>First name: <input data-bind="value: firstName" /></p>
<p>Last name: <input data-bind="value: lastName" /></p>

<p>Full name: <strong data-bind="text: fullName"></strong></p>

我正在尝试但没有成功,更新文本框输入点击上的fullName(而不是onblur)。

编辑:

代码运行良好。我只是希望在名字/姓氏文本框上写入时姓氏会更新

现在更新了onblur,写入时不更新。

最佳答案

为了按照您的建议更改输入的更新模式, knockout 中有一些内置方法可以实现此目的。

请参阅此引用:http://knockoutjs.com/documentation/value-binding.html

特别是关于值(value)更新的部分。

在这种情况下,您可以使用 valueUpdate: 'afterkeydown' 来更新绑定(bind)。

在此情况下,需要更改的只是您的绑定(bind)。

<p>First name: <input data-bind="value: firstName, valueUpdate: 'afterkeydown'" /></p>
<p>Last name: <input data-bind="value: lastName, valueUpdate: 'afterkeydown'" /></p>

<p>Full name: <strong data-bind="text: fullName"></strong></p>

<button data-bind="click: capitalizeLastName">Go caps</button>

更新了 JSFiddle:http://jsfiddle.net/infiniteloops/en6AR/1/

关于javascript - knockout - 通知属性(property)变更,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824538/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com