में अपरिभाषित है हमारे पास एक ऐसा पृष्ठ है जो नीचे दिए गए फॉर्म के साथ एक मोडल संवाद खोलता है। हालांकि जब हम नियंत्रक को दबाते हैं जो फॉर्म एक्शन को संभालना चाहिए, तो फॉर्म ऑब्जेक्ट अपरिभाषित है और मैं समझने के लिए एक कोणीय नौसिखिया का बहुत अधिक हूं ...AngularJS मोडल संवाद फ़ॉर्म ऑब्जेक्ट नियंत्रक
यह मूल पृष्ठ नियंत्रक मोडल खोलने के लिए फ़ंक्शन रखता है संवाद:
app.controller('organisationStructureController', ['$scope', ..., '$modal', function ($scope, ..., $modal) {
$scope.openInvitationDialog = function (targetOrganisationId) {
$modal.open({
templateUrl: 'send-invitation.html',
controller: 'sendInvitationController',
resolve: {$targetOrganisationId: function() {
return targetOrganisationId;
}
}
}
);
};
एक पृष्ठ पर इस तरह
:
// inside a loop over organisations
<a ng-click="openInvitationDialog({{organisation.id}})">Invite new member</a>
निमंत्रण संवाद एचटीएमएल इस तरह दिखता है:
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<!-- ... -->
</div>
<div class="modal-body">
<form name="invitationForm">
<div class="form-group">
<label for="email" style="color:white;">Email</label>
<input type="email" class="form-control" autocomplete="off" placeholder="New member email" id="email" name="email" ng-model="invitation.email" required="true"/>
<span class="error animated fadeIn" ng-show="invitationForm.email.$dirty && invitationForm.email.$error.required">Please enter an email address!</span>
<span class="error animated fadeIn" ng-show="invitationForm.email.$error.email">Invalid email</span>
</div>
<!-- ... -->
<div class="modal-footer">
<button type="button" class="btn btn-default" ng-click="cancel()">Cancel</button>
<button type="submit" class="btn btn-primary" ng-click="sendInvitation()">Invite</button>
</div>
</form>
</div>
</div>
</div>
नियंत्रक कि निमंत्रण संभाल चाहिए कहीं और है:
app.controller('sendInvitationController', ['$targetOrganisationId', '$scope', ...,
function ($targetOrganisationId, $scope, ...) {
$scope.invitation = {
// ...
targetOrganisation: {
id: $targetOrganisationId
}
};
$scope.sendInvitation = function() {
// $scope.invitationForm is undefined
if ($scope.invitationForm.$invalid) {
return false;
}
// send the invitation...
};
}]);
तो नियंत्रक में प्रपत्र गुंजाइश प्राप्त करने के लिए सही तरीका क्या है?
शायद मुझे $modal
को sendInvitationController
में इंजेक्ट करने की आवश्यकता है और sendInvitation
फ़ंक्शन जोड़ें? लेकिन जब मैं ऐसा करता हूं तो कार्रवाई कभी नियंत्रक में प्रवेश नहीं करती है। या क्या मुझे उस फ़ंक्शन को जोड़ना है जो नियंत्रक को संदर्भित करने के बजाय सबमिट कार्रवाई को $modal.open({ ...
पर संभालता है? हालांकि मैं SendInvitationController को अपनी फ़ाइल और दायरे में रखना पसंद करूंगा।
किसी भी मदद के लिए धन्यवाद!
$scope.invitation
वस्तुsendInvitationController
में अपरिभाषित नहीं है, लेकिन सही डेटा रखती है:संपादित
हम कई चीजें हैं जो हमें एक समाधान का निर्माण और कोई सवाल ही उत्तर देने में सहायता कर सकते हैं मदद की पाया , जबकि
$scope.invitationForm
अनिर्धारित बनी हुई है।- भेजने-invitation.html अंदर हम
$scope.invitationForm.$invalid
पहुँच सकते हैं और वहीं सत्यापन कर सकते हैं:<button type="button" ng-click="sendInvitation()" ng-disabled="invitationForm.$invalid">Invite</button>
तो सवाल यह है: क्यों करता है $scope
करने के लिए invitationForm
वस्तु के बंधन पर प्रपत्र जबकि प्रस्तुत विफल मॉडल संक्षेप में बांधता है?
मुझे एक ही समस्या थी - समस्या यह है कि $ मोडल इस तरह से एक मोडल बनाते समय दो स्कॉप्स बनाता है - एक मोडल विंडो उद्देश्यों के लिए और दूसरा आपका है। अपने एनजी-फॉर्म अभिव्यक्ति में डॉट डालने का प्रयास करें - $ scope.data = {} और फिर ng-form = "data.invitationForm" – 4vanger
ऑप्टिकल 'बैकड्रॉप' के साथ '$ संवाद' का उपयोग क्यों न करें: झूठी,'। –
आपके उत्तरों के लिए धन्यवाद। @ 4avanger: दो अलग-अलग स्कॉप्स होने पर कुछ डॉट नोटेशन सहायता क्यों जोड़ती है? मैंने कोशिश की लेकिन इसके परिणामस्वरूप आमंत्रण के बजाय डेटा को अपरिभाषित किया गया। @ मैक्सिम: हम $ मोडल का उपयोग कर रहे हैं। पता नहीं क्या $ संवाद है, शायद यह वही है?'BackdropCLick: false' क्या करता है? – Pete