从敲击js中的attr调用模型函数来获取动态属性

时间:2015-01-20 16:22:36

标签: javascript knockout.js attr

我对淘汰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完全处理时)

2 个答案:

答案 0 :(得分:1)

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

所以你的getAttributeKeyValuePairCollection()方法只需要返回对象:

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

在您的data-bind

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

请参阅Documentation

答案 1 :(得分:0)

您没有指定要设置的属性

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

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

这将导致

  <span class="title : SampleTitle" >