簡體   English   中英

Knockout.js:高亮顯示文本框中的值更改代碼

[英]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擴展程序來解決此問題,例如

http://jsfiddle.net/a3fFa/

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM