2013-04-24 42 views
15

我有兩個文本屬性數據日期和城市是observables。 我需要連接單個div中的兩個文本屬性數據。 併爲這兩個文本應用單獨的樣式。 目前的情況是使用knockoutjs數據綁定屬性:多個數據綁定在淘汰賽js

<div class="date" data-bind="text:Date" /> 
<div class="city" data-bind="text:City" /> 

預計:

<div class="date city" data-bind=" text:Date text:City" /> 

輸出:2013年5月24日紐約

請指導我該怎麼辦這個。

+0

嘗試用逗號分隔'data-bind =「文本:日期,文本:城市」' – 2013-04-24 12:01:57

+0

感謝您的回覆。我用逗號試過,只有城市名稱會顯示。 – user2706 2013-04-24 12:04:14

+0

真的有理由關注單個div嗎?就像爲什麼你不使用2跨度並解決問題? – everblack 2017-12-15 09:47:47

回答

25

您不能在元素上使用兩個相同的綁定。相反,您應該創建一個使用您想要顯示的兩個值格式化文本的計算器。

例如(假設你的日期和城市是觀測):

viewModel.DateCity = ko.computed(function() { 
    return viewModel.Date() + " - " + viewModel.City(); 
}); 

然後在您的數據綁定,只需綁定到計算機。

<div class="date city" data-bind="text:DateCity" /> 

另一種選擇是直接在綁定中組合值。

<div class="date city" data-bind="text: Date() + ' - ' + City()" /> 

就我個人而言,我覺得計算出來的方法是更清潔的方法。

+0

我需要爲日期和城市應用樣式。在上面的示例DateCity中,我無法應用樣式。 – user2706 2013-04-24 12:07:29

+0

CSS類與文本綁定無關,只能控制顯示的數據。您仍然可以像上面那樣應用這兩個CSS類。 – 2013-04-24 12:11:11

+0

好的,謝謝。我會試試這個。 – user2706 2013-04-24 12:12:24

3

要爲每個零件使用不同的樣式,您需要單獨的HTML元素來將這些樣式附加到。對每個零件使用span都可以。

<div> 
    <span class="date" data-bind="text:Date"></span> 
    <span class="city" data-bind="text:City" ></span> 
</div> 
+0

感謝您的回覆。它的工作現在:-) – user2706 2013-04-24 12:29:08

0

使用「,」或「+」號做多個數據綁定。

<div class="date city" data-bind=" text:Date(), text: City" /> 


<div class="date city" data-bind=" text:Date() + City" /> 
+0

@radim:我猜你忘了用()這裏'data-bind =「text:Date(),text:City」'我猜它應該是'data-bind =「text:Date (),text:City()「' – Mou 2015-05-29 09:26:25

1

隨着ko.punches你可以做

<div class='date city'>{{ Date() }} {{ City }}</div> 

只是一個偉大的插件另一種選擇。

3

您可以添加2個跨度或調用它

<div class="date" data-bind="text:Date() +' '+ city()" /> 
4

你可以簡單的寫: -

data-bind = "text: Date() + City()" 

如果你想添加任何字符串例如: - 2013-05-24:紐約,您可以編碼爲:

data-bind = "text: Date() + ':' + City()" 

這種方式它爲我工作。