2013-09-01 7 views
7

मुझे शैली बाध्यकारी के बारे में एक सवाल है। क्या पूरे स्टाइल बाइंडिंग टेक्स्ट को उत्पन्न करना संभव है? तो संपत्ति और मूल्य भागों एक साथ? उदाहरण के लिए:क्या आप नॉकआउटज शैली बाध्यकारी को संपत्ति + मूल्य निर्दिष्ट कर सकते हैं?

function ViewModel() { 
    this.fontSize = ko.observable(12); 

    this.fontSizeCSS = ko.computed(function() { 
     return "font-size: " + " " + this.fontSize() + "px"; 
    }, this); 

} 

// Activates knockout.js 
ko.applyBindings(new ViewModel()); 

आसान तरीका इस तरह करना है:

<div data-bind="style: { fontSize: fontSize() + 'px'}"> 
    <p>Lorem ipsum</p> 
</div> 

क्या यह संभव है यह (मैंने कोशिश की, यह काम नहीं किया था) इस तरह एक तरह से करने के लिए:

<div data-bind="style: { fontSizeCSS() }"> 
    <p>Lorem ipsum</p> 
</div> 

यदि हां, तो कैसे? यदि नहीं, तो क्यों नहीं? कोई एचटीएमएल शैली तत्व के लिए बाध्यकारी पाठ कर सकता है, लेकिन मैं सोच रहा था कि क्या आप इसे कुछ हद तक समान कर सकते हैं, मैं क्या प्रस्तावित कर रहा हूं? धन्यवाद!

+0

आपको अंतिम उदाहरण पर अपने बाध्यकारी में() नहीं होना चाहिए। – deltree

+0

बाहर छोड़ना() इस मुद्दे को हल नहीं करेगा। – Zsombi

+0

यह सही है, लेकिन गलत कोड होने से चीजों की मदद नहीं मिलती है। – deltree

उत्तर

12

style binding का मुख्य पैरामीटर string नहीं है, लेकिन

आप एक जावास्क्रिप्ट वस्तु जिसमें संपत्ति के नाम शैली के नाम के अनुरूप पारित करना चाहिए, और मूल्यों शैली मूल्यों आप चाहें के अनुरूप लागू करने के लिए।

तो अपने fontSizeCSS गणना की एक वस्तु और न कोई स्ट्रिंग लौट जाना चाहिए, और यह ठीक काम करेगा:

this.fontSizeCSS = ko.computed(function() { 
     return {"fontSize": this.fontSize() + "px"}; 
}, this); 

डेमो JSFiddle

+0

अच्छी तरह से किया गया, मैं पूरी तरह से याद किया कि – deltree

+0

धन्यवाद! यह इस तरह से काम करता है, एकमात्र मुद्दा यह है कि मुझे फ़ॉन्ट आकार के बजाय फ़ॉन्ट आकार रखना होगा। क्या आप इसे अपने उत्तर में सही कर सकते हैं? – Zsombi

+0

@Zsombi आप किस ब्राउज़र का उपयोग कर रहे हैं? क्योंकि यह आईई 10 और नवीनतम क्रोम दोनों में मेरे डेमो में ठीक काम कर रहा है ... – nemesv

संबंधित मुद्दे