簡體   English   中英

使用自定義綁定更新元素文本

[英]Update element text using custom binding

我正在進行第一個自定義綁定。 我希望能夠指定基於資源文件在元素上顯示的文本。 像這樣:

var exampleResource = {
    hello: 'world'
};

ko.bindingHandlers.resource = {

    init: function (element, valueAccessor) {

        var value = valueAccessor();

        ko.bindingHandlers.text.update(element, function() { 
            return exampleResource[value] || '';
        });
    }

};

<span data-bind="resource: 'hello'"></span>

我應該如上所述使用ko.bindingHandlers.text嗎?

由於無法觀察到資源變量,是否有必要為綁定添加update回調? 如果我正確理解它,則僅當將observable作為值傳遞時才調用它?

如果要支持綁定處理程序動態輸入,則需要update 在您的示例中,您沒有這樣做,但是可以 這是一個例子:

 var exampleResource = { hello: 'world', goodbye: 'drowl' }; ko.bindingHandlers.resource = { update: function (element, valueAccessor) { var key = ko.utils.unwrapObservable(valueAccessor()); ko.bindingHandlers.text.update(element, function() { return exampleResource[key] || key; }); } }; ko.applyBindings({ myObs: ko.observable('goodbye') }); 
 span { font-weight: bold; color: red; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script> Static: <span data-bind="resource: 'hello'"></span> <hr> Dynamic: <span data-bind="resource: myObs"></span> - based on: <select data-bind="value: myObs, options: ['hello', 'goodbye']"></select> 

如果您不需要這種動態性,則可以堅持使用舊的解決方案。 但是,在那種情況下,我會質疑KnockoutJS對於一般資源的附加價值:-)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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