Можно ли добавить статический текст в привязку данных к чему-то вроде примера ниже:
<p data-bind="text:someProperty"></p>
Я хотел бы добавить статический текст, как показано ниже:
<p data-bind="text:' + $' + someProperty"></p>
Можно ли добавить статический текст в привязку данных к чему-то вроде примера ниже:
<p data-bind="text:someProperty"></p>
Я хотел бы добавить статический текст, как показано ниже:
<p data-bind="text:' + $' + someProperty"></p>
Не можете ли вы поставить статический текст внутри тега абзаца вместе с тегом span и привязкой данных к диапазону?
<p>text: <span data-bind="[whatever]" /></p>
Здесь объяснение комментария Imran выше, что является хорошим ответом
Ваше выражение text:
обычно завернуто в вызов ko.utils.unwrapObservable:
ko.utils.unwrapObservable(someProperty)
но при использовании более сложного выражения эта неявная развертка не работает:
ko.utils.unwrapObservable(' + $' + someProperty) // won't find an observable; won't unwrap
Итак, вы должны развернуть его самостоятельно:
' + $' + ko.utils.unwrapObservable(someProperty) // good
или, поскольку вы знаете, что это наблюдаемое, вы можете просто использовать версию Imran:
' + $' + someProperty() // good, if someProperty is definitely an observable
Я довольно поздно (и новичок в Knockout), но вот еще один вариант, который я использовал для добавления статического текста вокруг наблюдаемого. В моем случае я хотел добавить круглые скобки вокруг значения, выбранного из раскрывающегося списка.
Javascript
...
return function AppViewModel() {
this.myOptionValues = ko.observableArray([
{ label: "Foo", value: "Bar" },
]);
this.mySelectedValue = ko.observable();
this.myValue = ko.computed(function () {
return this.mySelectedValue() ? '(' + this.mySelectedValue().label + ')' : '';
}, this);
};
...
HTML
<small data-bind="text: myValue"></small> // (Foo)
Лучше всего было бы создать новый Computed внутри viewModel и связать текст с этим. Вычисляемый конкат наблюдаемый вам и статический текст. Это будет выглядеть как
var myViewModel = {
...
var self= this;
self.myObservable = ko.observable('some value here');
self.myComputed = ko.pureComputed(function(){
return 'some text here' + self.myObservable() + 'you can use other text here';
});
...
}
Затем в вашем HTML просто используйте вычисленный наблюдаемый.
<p data-bind="text: myComputed"></p>
Если вам нужна гибкость, вы можете использовать параметры для вычисленного obs и передать их в hmtl bind
self.myComputed2 = ko.pureComputed(function(param1) {
return param1 + self.myObservable;
}
И в html
<p data-bind="text: myComputed2("somestring")"></p>