knockout js中attr调用模型函数获取动态属性

call model function from attr in knockout js to get dynamic attributes

我对 knockout js 不是很流利,所以这可能是一个愚蠢的。

我的模型是这样的:

  var myViewModel = {
    personName: 'Bob',
    attributesAttached: 'title:SampleTitle',
    getTitle : function(){
    return "SampleTitle";
    },
    getAttributeKeyValuePair : function(){
       return "title : SampleTitle";
    },
     getAttributeKeyValuePairCollection : function(){
       return "title : SampleTitle , href : test.html";
    }

    };

ko.applyBindings(myViewModel);

我的工作html看起来像这样:

The name is
<span data-bind="text: personName,attr: { title :  getTitle() }"></span>

我想实现这个:

不工作

The name is
<span data-bind="text: personName,attr: { getAttributeKeyValuePair() }"></span>

因为稍后一些属性或方法会给我一个属性键值对的集合

不工作

The name is
<span data-bind="text: personName,attr: { getAttributeKeyValuePairCollection() }"></span>

我怎样才能让它工作,以便我可以动态生成我的属性名称和它们各自的值(当我的 JSON 被完全处理时)

您没有指定要设置的属性

我不知道你想设置哪个属性,但语法是:

  data-bind="attr:{'class': getAttributeKeyValuePair()}"

这将导致

  <span class="title : SampleTitle" >

attr 绑定处理程序需要一个对象,其中每个 属性-名称对应于属性名称,属性-值对应于属性值。

所以你的 getAttributeKeyValuePairCollection() 方法只需要 return object:

getAttributeKeyValuePairCollection: function() {
   return {
          href: 'test.html',
          title: 'SimpleTitle'
          };
}

在你的 data-bind 中:

<span data-bind="text: personName, attr: getAttributeKeyValuePairCollection()"></span>

Documentation