[英]Knockout.js: highlight text box on value change from code
我將ASP.NET MVC4項目中的Knockout.js與SignalR結合使用,以實現工業設施的實時可視化。 我們有許多頁面,其中跨度或文本框與視圖模型數據綁定。 每隔2到10秒,就會通過SignalR將新值從服務器發送到客戶端瀏覽器,並且視圖模型中的值(並由此更新span,div或文本框輸入中的文本)。 這很好。 我試圖實現的是每當值更改時頁面上的某種視覺通知(例如,jQuery突出顯示顯示該值的DOM元素)。
我猜想基因敲除事件綁定很接近我的需要,但是據我所知,它只能將相關的視圖模型項傳遞給JS函數,而不是我需要突出顯示的DOM元素。 我希望我能理解。
因此,我需要一種在文本框輸入的值從“落后代碼”而不是手動用戶輸入更改時觸發功能的方法。 應該為該功能提供相關的DOM元素,以進行進一步處理。
到目前為止,我的代碼:
<table class="StatusRowList">
<thead>
<tr>
<th>Parameter</th>
<th>Value</th>
</tr>
</thead>
<tbody data-bind="foreach: Items">
<tr>
<td><a data-bind="attr: { href: '/Archive/Show/?StationId=' + StationId() + '&DataPointId=' + DpId() }"><span data-bind="text: Text"></span></a></td>
<td>
<span data-bind="text: UnitPrefix"></span>
<input data-bind="value: Value" />
<span data-bind="text: UnitSuffix"></span>
</td>
</tr>
</tbody>
</table>
感興趣的線是兩個跨度之間的“輸入”。 感謝您的幫助!
無法通過綁定或ViewModel來區分是否設置了可觀察對象。 您將必須編寫一個ko擴展程序來解決此問題,例如
ko.extenders.eventDriven = function(target, options) {
var computed = ko.computed({
read: target,
write: target
});
computed.updatedFromEvent = ko.observable(false);
computed.onEvent = function(value) {
target(value);
computed.updatedFromEvent(true);
}
return computed;
};
編輯:我為此btw, https://github.com/AndersMalmgren/Knockout.Concurrency做了一個框架,但是它的目的更多是為了確定何時其他用戶保存並向用戶http://jsfiddle.net/7atZT/提出沖突1 /
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.