如何将自定义参数传递给文本绑定?
我的HTML
<span data-bind="text: something"></span>
我真的想要这样的东西
<span data-bind="text: something('123456')"></span>
因此span
最终包含文本'Something was sent 123456'
self.something = ko.computed(function(p)
{
return "Something was sent " + p;
}, this);
首要问题是我有几个跨度,每个跨度与可观察数组的计数不同。我曾经使用过这个,但在我的ViewModel中使用所有那些非常相似的计数函数似乎非常麻烦。
<span data-bind="text: countFemale"></span>
<span data-bind="text: countMale"></span>
<span data-bind="text: countFrogs"></span>
<span data-bind="text: countCars"></span>
修改
我的计数功能看起来像这样
self.areaCount = ko.computed(function(areaName)
{
console.log(this);
var c = 0;
$.each(self.progression(), function(i, obj){
if(obj.model.area() == areaName)
c++;
});
if(c == 0)
return '';
return "(" + c + ")";
}, this);
请注意,我希望能够传入areaName
以避免使用此类功能
self.areaCount = ko.computed(function()
{
console.log(this);
var c = 0;
$.each(self.progression(), function(i, obj){
if(obj.model.area() == "male")
c++;
});
if(c == 0)
return '';
return "(" + c + ")";
}, this);
self.areaCount = ko.computed(function()
{
console.log(this);
var c = 0;
$.each(self.progression(), function(i, obj){
if(obj.model.area() == "female")
c++;
});
if(c == 0)
return '';
return "(" + c + ")";
}, this);
self.areaCount = ko.computed(function()
{
console.log(this);
var c = 0;
$.each(self.progression(), function(i, obj){
if(obj.model.area() == "frogs")
c++;
});
if(c == 0)
return '';
return "(" + c + ")";
}, this);
self.areaCount = ko.computed(function()
{
console.log(this);
var c = 0;
$.each(self.progression(), function(i, obj){
if(obj.model.area() == "cars")
c++;
});
if(c == 0)
return '';
return "(" + c + ")";
}, this);
答案 0 :(得分:4)
您是否尝试过使用某个功能:
<div data-bind="text: showCount('frogs')"></div>
然后在您的视图模型中添加以下属性:
showCount: function (value) { return '(' + value + ')'; }
在您的情况下,将区域名称传递给测试函数并进行过滤。