2013-05-13 79 views
5

我有一个可观察数组的视图模型。它填充了一些JSON:淘汰赛模板 - 绑定文本到函数,并传递了模板数据

<ul id="tiles-ul" data-bind="template: {name:'twitter_template', foreach:socialTiles}"> 



<script type="text/html" id="twitter_template"> 
    <li class="social-tile box-shadow"> 
    <div class="header"> 
     <div class="header-img"> 
     <img data-bind="attr: { src: actor.avatar}"> 
     </div> 
     <div class="name_and_time"> 
     <span class="full-name" data-bind="text: actor.title"></span> 
     <span class="twitter-name" data-bind="text: actor.id"></span> 
     <span class="how-long-ago" > 5 minutes ago </span> 
     </div> 
    </div> 
    <div class="message-content" data-bind="html: object.content"> 
    </div> 
    <div class="footer"> 
     <div class="social-icon-twitter"> 
     </div> 
    </div> 

    <span data-bind="text: $index"></span>  
    </li> 
</script> 

ID喜欢的元素的文本数据绑定要的结果:

this.socialTiles = ko.observableArray([]); 

ko.computed(function() { 

    jQuery.getJSON(this.apiURL+"&callback=?", function (data) { 

    var theData = data.entries; 
    tilesModel.socialTiles(theData); 
    console.dir(theData); 
    }); 
}, tilesModel); 

模型中的每个项目,我使用模板构建李一个函数,将来自模型的当前数据用作参数。例如:

actor.id是含有用户(如“http://twitter.com/iamdiddy”)

我想的一个Twitter URL该字符串传递给一个函数并返回一个‘#iamdiddy’表示的字符串。

<span class="twitter-name" data-bind="text: getTwitterTag(actor.id)"></span> 
在视图模型

function getTwitterTag("twURL"){ 
    return ... whatever; 
} 

我怎么能做到这一点(调用带有参数的函数,而不是提取#...)

?淘汰赛是否支持这项功能?

回答

19

尝试改变

<span class="twitter-name" data-bind="text: getTwitterTag(actor.id)"></span> 

<span class="twitter-name" data-bind="text: $root.getTwitterTag($data)"></span> 
+0

$ root.getTwitterTag(actor.id)没有工作,但没有什么工作是$ root.getTwitterTag($数据),接受答案反正因为它让我发现了正确的解决方案 – nuway 2013-05-16 15:31:47