2012-02-15 26 views
17

क्या शैली पृष्ठभूमि-छवि बाध्यकारी बनाना संभव है?मैं सीएसएस पृष्ठभूमि-छवि संपत्ति को कैसे बांध सकता हूं?

मैं इस कोड की कोशिश की:

<div data-bind="foreach: itemList"> 
    <div data-bind="style: { background-image: 'url:(temp.png)' }">some text</div>   
</div> 

मैं भी url के बाद url में backgroundImage की कोशिश की, उद्धरण चिह्नों के बिना, : बिना, लेकिन यह अभी भी काम नहीं कर रहा। अन्य सभी, जैसे color या backgroundColor बाइंडिंग पूरी तरह से काम कर रहे हैं।

+0

क्या आप वास्तव में काम करने के लिए यूआरएल प्रदान करने के लिए संपत्ति के लिए बाध्यकारी हो गए थे? आपके उदाहरण से आपके पास एक हार्ड कोडित यूआरएल है जिसे मैं नॉकआउट डेटा-बाइंड का उपयोग नहीं करता क्योंकि आप उपयोग शैली = "पृष्ठभूमि-छवि: ..." का उपयोग कर सकते हैं। मैं यूआरएल प्रदान करने के लिए एक संपत्ति के लिए बाध्यकारी पाने की कोशिश कर रहा हूँ। मैं सिर्फ एक हैक के रूप में संपत्ति में url: (temp.png) सहित विचार कर रहा हूं। – Thomas

उत्तर

24

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

इसका मतलब है कि आपको के बजाय backgroundImage का उपयोग करना होगा।

कुछ इस तरह:

<div data-bind="foreach: itemList"> 
    <div data-bind="style: { backgroundImage: 'url(temp.png)' }">some text</div> 
</div> 
+0

अजीब, प्रलेखन वास्तविक संचालन के विपरीत है ... –

+0

मैं प्रलेखन को लाल करता हूं, और जावास्क्रिप्ट शैली विशेषताओं में से अधिकांश के लिए एक लिंक भी है: http://www.comptechdoc.org/independent/web/cgi/javamanual/ javastyle.html, यह टैग्स के लिए "नियमित" टैग नामों का उपयोग करता है जिनके पास जावास्क्रिप्ट नाम नहीं हैं:/ –

+1

मुझे पता है कि वे 'attr' बाध्यकारी के लिए एकल उद्धरण का उपयोग करते हैं और शायद यह वैसे ही काम करता है और दस्तावेज़ बस हैं अद्यतित नहीं है। असल में, जब मैं इसके बारे में सोचता हूं तो मुझे लगता है कि मुझे इससे पहले समस्याएं थीं। –

6

आप एक पृष्ठभूमि छवि के लिए url खंड में : की जरूरत नहीं है, यह सिर्फ url(/foo.png) है।

आपका बाध्यकारी भी background-image का उपयोग करने के बाद से है कि शैली की संपत्ति है जरूरत है, लेकिन उद्धरण में है, इसलिए की तरह (backgroundImage शैली के लिए जावास्क्रिप्ट एपीआई है):

<div data-bind="style: { 'background-image': 'url(https://www.google.com/intl/en_com/images/srpr/logo3w.png)' }"></div>​ 

लाइव यहाँ डेमो - http://jsfiddle.net/slace/EgUaM/

संपादित करें उदाहरण पोस्ट करने के बाद गिथब ने डेटाबेस समस्याओं का सामना करना शुरू कर दिया है, इसलिए यहां एक वैकल्पिक जेएसफ़िल - http://jsfiddle.net/slace/EgUaM/1/

+0

हाय, वह बेवकूफ मेरे लिए काम नहीं करता है? मैंने उद्धरण के साथ आपकी सलाह की कोशिश की, लेकिन यह मेरे लिए काम नहीं कर रहा है। असल में, मैंने Google कोड लोड करने के लिए अपने कोड को बेवकूफ से कॉपी किया है, फिर भी कुछ भी नहीं? –

+0

इसे पोस्ट करने के बाद से जिथब ऑफ़लाइन हो गया है (https://status.github.com/ के अनुसार) ताकि यह jsfiddle में नॉकआउट लोड करने में विफल हो! –

+0

यह ऑनलाइन वापस आ गया है, लेकिन यह jsfiddle कार्यात्मक नहीं है। यह पृष्ठभूमि स्वीकार करता है रंग: http://jsfiddle.net/EgUaM/2/ और पृष्ठभूमि-छवि टैग को छोड़कर, अन्य सभी टैग। @ जॉन पापा मुझे पता है कि मैं कक्षा बाध्यकारी का उपयोग कर सकता हूं, लेकिन मुझे शैली बाध्यकारी का उपयोग करने की आवश्यकता है :) –

0

बस संपत्ति के नाम के आसपास उद्धरण (एकल उद्धरण) डालें। जब भी आपके पास - संपत्ति नाम में है background-image या background-url आप नाम

<div data-bind="style: {'background-image' : 'url(somepath)'}> 

समस्या यह है कि चारों ओर उद्धरण डाल करने के लिए की जरूरत है। नॉकआउट दस्तावेज में उल्लेख किया गया।

+0

अंत में एक डबल कोट गुम है? बीटीडब्ल्यू, यह मेरे मामले पर काम नहीं करता है। –

0

KO प्रलेखन के आधार पर,

मूल्य KO में किसी भी प्रॉपर्टी पर सेट किया जा रहा है ViewModal संपत्ति मूल्य।

जहां कुछपथ = व्यूमोडाल प्रॉपर्टी जो आपकी पृष्ठभूमि छवि के लिए पथ है।

0

जब दो नाम होते हैं, तो निचले मामले में पहले नाम और ऊपरी मामले में दूसरे नाम के पहले अक्षर का उपयोग करें। उदाहरण:

color = color 
background-color = backgroundColor 
font-style = fontStyle 
font-weight = fontWeight 

http://knockoutjs.com/documentation/style-binding.html और http://www.comptechdoc.org/independent/web/cgi/javamanual/javastyle.html

9

को देखें मुझे यकीन है कि क्यों हर कोई (Sujesh को छोड़कर) इस प्रश्न का उत्तर है और अभी भी कठिन temp.png कोडिंग नहीं हूँ। यदि आप ko.observable संपत्ति पर बाध्यकारी नहीं हैं तो data-bind का उपयोग न करें। बस HTML तत्व की मानक शैली संपत्ति का उपयोग करें।

<div data-bind="foreach: itemList"> 
    <div style="background-image: url('temp.png');">some text</div>   
</div> 

यूआरएल प्राप्त करने के लिए बाध्यकारी डेटा के लिए मैं चाहता हूं कि सुजेश अरुकिल का जवाब मेरे लिए काम करता है लेकिन ऐसा नहीं हुआ। अगर किसी के पास यह काम कर रहा है, तो कृपया मुझे प्रबुद्ध करें।

यहां मेरे लिए क्या काम किया गया है लेकिन मुझे इसकी परवाह नहीं है। मैंने बैकग्राउंड-इमेज के मूल्य को पाने के लिए गणना की।

दृश्य मॉडल

self.imageUrl = ko.observable(); 

self.bgImageUrlStyle = ko.computed(function() { 
    return "url(" + self.imageUrl() + ")"; 
}); 

एचटीएमएल में

<div data-bind="style: { 'background-image': bgImageUrlStyle }"> 
</div> 
4

या सिर्फ जोड़

<div data-bind="style: { backgroundImage: 'url(\'' + $data.videoImg + '\')' }"> </div> 
6

वैसे, आप वाक्य रचना बनाने के लिए एक कस्टम बाध्यकारी सेट कर सकते हैं कम अनावश्यक:

ko.bindingHandlers.backgroundImage = { 
    update: function(element, valueAccessor) { 
    ko.bindingHandlers.style.update(element, 
     function(){return {backgroundImage: "url('" + valueAccessor() + "')"}}); 
    } 
}; 

फिर अपने HTML में आप कर सकते हैं

<div data-bind="backgroundImage: image"></div> 
+1

यह स्वीकार्य उत्तर होना चाहिए। स्वच्छ, संक्षिप्त, और उपयोग करने के लिए बहुत आसान और पुन: उपयोग करें। – Jed

0

जब यू कहते हैं: डेटा-बाँध: "{... somecode ...}" आपको यह समझना होगा कि यू जावास्क्रिप्ट के अंदर कर रहे हैं की जरूरत है। यदि आप लिखते हैं: पृष्ठभूमि-छवि वह पृष्ठभूमि (पृष्ठभूमि-छवि) से छवि घटाने की कोशिश करता है। Thats अपरिभाषित चर हैं। तो यह बहुत स्पष्ट है।

0

<div data-bind="style: { background: 'url(' + imageUrl + ')' }" ></div>

ऊपर एक मैं काम करने के लिए लगता है कि इस्तेमाल किया।

यदि आप background: 'url(imageUrl)' का उपयोग करते हैं, तो यह केवल एक स्ट्रिंग के रूप में विचार करेगा।

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

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