[英]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.