是否可以使用以下示例添加静态文本到数据绑定:
<p data-bind="text:someProperty"></p>
我想添加如下静态文本:
<p data-bind="text:' + $' + someProperty"></p>
答案 0 :(得分:9)
您是否可以将静态文本与span标记一起放在span标记和data-bind上?
<p>text: <span data-bind="[whatever]" /></p>
答案 1 :(得分:8)
以上是伊姆兰评论的解释,这是一个很好的答案
您的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
答案 2 :(得分:2)
我已经很晚了,(并且是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)
答案 3 :(得分:0)
最好的办法是在viewModel中创建一个新的Computed并将文本绑定到该模型。 计算出的结束了您需要的可观察量和静态文本。 这就是它的样子
log_errors
然后,在HTML中只使用计算的observable。
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';
});
...
}
如果您需要灵活性,可以使用计算的obs参数并在hmtl bind
中传递它们<p data-bind="text: myComputed"></p>
并在html中
self.myComputed2 = ko.pureComputed(function(param1) {
return param1 + self.myObservable;
}