Data binding 将参数传递给敲除Js文本绑定

Data binding 将参数传递给敲除Js文本绑定,data-binding,knockout.js,parameters,Data Binding,Knockout.js,Parameters,如何将自定义参数传递给文本绑定 我的HTML <span data-bind="text: something"></span> 最主要的问题是我有几个跨度,每个跨度都有一个不同于可观测阵列的计数。我曾经使用过这个函数,但在我的ViewModel中使用所有这些非常相似的计数函数似乎非常麻烦 <span data-bind="text: countFemale"></span> <span data-bind="text: countMale

如何将自定义参数传递给文本绑定

我的HTML

<span data-bind="text: something"></span>
最主要的问题是我有几个跨度,每个跨度都有一个不同于可观测阵列的计数。我曾经使用过这个函数,但在我的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>
请注意,我希望能够传入一个
areaName
,以避免像这样的函数太多

<span data-bind="text: something('123456')"></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);
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);

您是否尝试过仅使用函数:

<div data-bind="text: showCount('frogs')"></div>

在您的情况下,将区域名称传递给测试函数并进行过滤。

您是否尝试过仅使用函数:

<div data-bind="text: showCount('frogs')"></div>

在您的情况下,将区域名称传递给测试函数并进行过滤。

您能详细解释一下您的目标吗?这些范围都包含一个数字,该数字是可观察数组中特定元素的计数。有这么多相似的函数似乎很愚蠢,我希望能够只有一个函数,并传入一个参数,该参数决定应该使用哪种类型的计数。您能进一步解释您的目标吗?这些跨度都包含一个数字,该数字是可观察数组中特定元素的计数。有这么多相似的函数似乎很傻,我只想有一个函数,并传入一个参数来确定应该使用哪种类型的计数。我已经尝试过了,但一定是做错了什么,因为我刚刚重试了它并成功了。啊,老经典!在那里,完成了,很高兴帮助排序。感谢提醒我使用一个简单的函数-我在玩计算。我已经尝试过了,但一定是做错了什么,因为我刚刚重试了它,它成功了。啊,古老的经典!在那里,完成了,很高兴能帮助排序。谢谢你提醒我使用一个简单的函数-我在玩计算机。
showCount: function (value) { return '(' + value + ')'; }