我的網頁包含帖子列表,每個帖子都有自己的按鈕。這些帖子是從服務器JSON檢索的。每個人都應該有自己的href,這是json對象的一部分。所以很自然,我期望這個工作(假設 「fb_data」 是JSON對象{fb_data:{HREF:my_post_path}):呈現類似fb的按鈕與knockoutjs
(html fb-like widget code, with simple knockoutjs data-bind)
<li class="fb">
<div class="fb-like" data-send="false" data-layout="button_count" data-width="85" ata-show-faces="false" data-bind="attr: {href: fb_data.href}"></div>
<span class="like-container"><span class="likebox" title=""></span> Friends<br/>Like this!</span>
</li>
,這樣沒有工作。 我嘗試另一種方法和自定義實現了這一目的結合:
(html)
<li class="fb">
<div class="fb-like" data-send="false" data-layout="button_count" data-width="85" data-show-faces="false" data-bind="render_like: fb_data"></div>
<span class="like-container"><span class="likebox" title=""></ span> Friends<br/>Like this!</span>
</li>
(js)
ko.bindingHandlers.render_like = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var fb = valueAccessor();
$(element).attr(fb);
FB.XFBML.parse(element);
}
};
好了,這也不能工作。我轉硬盤,醜,不優雅的方式,並有這樣的:
(html)
<li class="fb" data-bind="render_like: fb_data"></li>
(js)
ko.bindingHandlers.render_like = {
init: function(element, valueAccessor, allBindingsAccessor, viewModel) {
var fb = valueAccessor();
var fb_like_str = '<div class="fb-like" data-send="false" data layout="button_count" data-width="85" data-show-faces="false"' href="' + fb.href + '" </div>';
fb_like_str += '<span class="like-container"><span class="likebox" title=""></span> Friends<br/>Like this!</span>';
$(element).html(fb_like_str);
FB.XFBML.parse(element);
}
};
一個工作,但感覺並不像淘汰賽精神...什麼 是第2的問題?
第一個應該可以正常工作。它給你什麼錯誤?您可能還想顯示您的JavaScript代碼。 – 2012-02-20 16:17:13
它沒有提供任何錯誤,它只是沒有正確地綁定href屬性(所以fb-like按鈕並沒有指向真正的帖子) – 2012-02-20 16:31:44
你能發佈javascript代碼嗎?或者甚至更好地重現jsfiddle.net上的問題 – 2012-02-20 16:38:23