मेरे पास एक फॉर्म है जो बूटस्ट्रैप से मार्कअप का उपयोग कर रहा है, निम्न की तरह:
<form class="form-horizontal">
<fieldset>
<legend>Legend text</legend>
<div class="control-group">
<label class="control-label" for="nameInput">Name</label>
<div class="controls">
<input type="text" class="input-xlarge" id="nameInput">
<p class="help-block">Supporting help text</p>
</div>
</div>
</fieldset>
</form>
वहाँ बहुत सारे बॉयलरप्लेट कोड है, कि मैं एक नए निर्देश को कम करना चाहूंगा - फॉर्म-इनपुट, इस प्रकार है:
<form-input label="Name" form-id="nameInput"></form-input>
उत्पन्न करता है:
<div class="control-group">
<label class="control-label" for="nameInput">Name</label>
<div class="controls">
<input type="text" class="input-xlarge" id="nameInput">
</div>
</div>
मैं एक साधारण टेम्पलेट के माध्यम से यह काम कर रहा हूं।
angular.module('formComponents', [])
.directive('formInput', function() {
return {
restrict: 'E',
scope: {
label: 'bind',
formId: 'bind'
},
template: '<div class="control-group">' +
'<label class="control-label" for="{{formId}}">{{label}}</label>' +
'<div class="controls">' +
'<input type="text" class="input-xlarge" id="{{formId}}" name="{{formId}}">' +
'</div>' +
'</div>'
}
})
हालाँकि यह तब है जब मैं अधिक उन्नत कार्यक्षमता में जोड़ने के लिए आया हूँ जो कि मैं फंस रहा हूँ।
मैं टेम्पलेट में डिफ़ॉल्ट मानों का समर्थन कैसे कर सकता हूं?
मैं अपने निर्देश पर एक वैकल्पिक विशेषता के रूप में "प्रकार" पैरामीटर को उजागर करना चाहता हूं, जैसे:
<form-input label="Password" form-id="password" type="password"/></form-input>
<form-input label="Email address" form-id="emailAddress" type="email" /></form-input>
हालांकि, अगर कुछ भी निर्दिष्ट नहीं है, तो मैं डिफ़ॉल्ट रूप से करना चाहूंगा "text"। मैं इसका समर्थन कैसे कर सकता हूं?
मैं विशेषताओं की उपस्थिति / अनुपस्थिति के आधार पर टेम्पलेट को कैसे अनुकूलित कर सकता हूं?
अगर यह मौजूद है, तो मैं "आवश्यक" विशेषता का समर्थन करने में सक्षम होना चाहूंगा। उदाहरण के लिए:
<form-input label="Email address" form-id="emailAddress" type="email" required/></form-input>
यदि requiredनिर्देश में मौजूद है, तो मैं इसे जनरेट में जोड़ना चाहूंगा<input /> आउटपुट में , और इसे अन्यथा अनदेखा । मुझे यकीन नहीं है कि इसे कैसे प्राप्त किया जा सकता है।
मुझे संदेह है कि ये आवश्यकताएं एक साधारण टेम्पलेट से आगे बढ़ सकती हैं, और पूर्व-संकलन चरणों का उपयोग करना शुरू करना होगा, लेकिन मैं एक नुकसान में हूं जहां शुरू करना है।
typeबाध्यकारी उदाहरण के माध्यम से गतिशील रूप से सेट किया गया है।type="{{ $ctrl.myForm.myField.type}}"? मैंने नीचे सभी तरीकों की जाँच की और कोई भी समाधान नहीं खोज पाया जो इस परिदृश्य में काम करेगा। टेम्पलेट फ़ंक्शन की तरह लगने वाले विशेषताओं के शाब्दिक मूल्यों को देखेंगे ।tAttr['type'] == '{{ $ctrl.myForm.myField.type }}'के बजायtAttr['type'] == 'password'। मैं हैरान हूँ।