2013-05-13 21 views
5

tôi có mô hình chế độ xem có mảng quan sát được. dân cư của nó với một số json:mẫu loại trực tiếp - văn bản ràng buộc với hàm, với dữ liệu mẫu được chuyển trong

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); 

cho từng hạng mục trong mô hình, tôi xây dựng một li sử dụng mẫu:

<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 giống như dữ liệu ràng buộc các văn bản của một phần tử là một kết quả của một hàm, với dữ liệu hiện tại từ mô hình được sử dụng làm đối số. Ví dụ:

actor.id là một chuỗi chứa một url twitter của người dùng (như "http://twitter.com/iamdiddy")

tôi muốn vượt qua chuỗi đó để một hàm và trả về một '#iamdiddy' đại diện.

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

trong mô hình xem

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

làm thế nào tôi có thể làm được điều này (gọi một hàm với đối số, không phải trích xuất cáC# ...)? Không loại trực tiếp hỗ trợ chức năng này?

Trả lời

19

Hãy thử thay đổi

<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) đã không làm việc, nhưng những gì đã làm công việc là $ root.getTwitterTag ($ data), chấp nhận câu trả lời anyways vì nó dẫn tôi khám phá ra giải pháp đúng – nuway

Các vấn đề liên quan