प्रस्तुत करने का कारण बनता है मैं नीचे एनजी-स्विच के साथ एनजी-स्विच का उपयोग करने की कोशिश कर रहा हूं। समस्या एनजी-इनिट के साथ है और पूरे नियंत्रक ब्लॉक को किसी भी एनजी-में परिवर्तन में पुनः प्रस्तुत किया जा रहा है।एनजी-शामिल नियंत्रक ब्लॉक को
login_form.html में, जब कोई उपयोगकर्ता लॉगिन करता है, तो मैं loginCtrl में isLoggedIn = true सेट करता हूं। हालांकि इससे नीचे पूर्ण एचटीएमएल का पुन: प्रस्तुत करने का कारण बनता है, जिससे एनजी-इनिट फिर से होता है।
मैं इस चक्र से कैसे बचूं?
<form class="form-inline">
<input type="text" placeholder="Email" ng-model="userEmail" class="input-small"/>
<input type="password" placeholder="Password" ng-model="userPassword" class="input-small"/>
<button type="submit" ng-click="login(userEmail, userPassword)" class="btn">Sign In</button>
</form>
नीचे नियंत्रक है - -
<div ng-controller="LoginCtrl" ng-init="isLoggedIn = false" class="span4 pull-right">
<div ng-switch on="isLoggedIn">
<div ng-switch-when="false" ng-include src="'login_form.html'"></div>
<div ng-switch-when="true" ng-include src="'profile_links.html'"></div>
</div>
</div>
नीचे लॉगिन फार्म के लिए HTML है
angularApp.factory('currentUser', function($rootScope) {
// Service logic
// ...
//
var allUsers = {"[email protected]": {name: "Robert Patterson", role: "Admin", email: "[email protected]", password: "rob"},
"[email protected]":{name: "Steve Sheldon", role: "User", email: "[email protected]", password: "steve"}}
var isUserLoggedIn = false;
// Public API here
return {
login: function(email, password){
var user = allUsers[email];
var storedPass = user.password;
if(storedPass === password){
isUserLoggedIn = true;
return true;
}
else
{
return false;
}
},
logout: function(){
$rootScope.$broadcast('logout');
isUserLoggedIn = false;
},
isLoggedIn: function(){
return isUserLoggedIn;
}
};
});
मुझे लगता है कि मेरा जवाब समाधान 1 है? – asgoth
@asgoth, ठीक है, आपका पहेली अनिवार्य रूप से समाधान 1 का उपयोग करता है, हालांकि अतिरिक्त नियंत्रकों के कारण अभी तक एक और बच्चा गुंजाइश है। आपका "एक नियंत्रक" उत्तर अनिवार्य रूप से समाधान 3 का उपयोग करता है - आप अभिभावक स्कोप संपत्ति को बदलने के लिए मूल दायरे में एक फ़ंक्शन को कॉल कर रहे हैं (जो प्रोटोटाइप विरासत के कारण बाल स्कॉप्स के लिए उपलब्ध है)। लेकिन तब वहां कुछ समाधान 1 है, मूल वस्तु संपत्ति के कारण - आप समाधान 3 के साथ एक आदिम का उपयोग कर सकते हैं। यहां एक [समाधान 3 के लिए पहेली] है (http://jsfiddle.net/mrajcok/jNxyE /) जो मूल दायरे में एक आदिम का उपयोग करता है। विस्तृत उत्तर मार्क के लिए –
+1। मुझे अपने समाधान को लागू करने दें और देखें कि क्या यह समस्या का समाधान करता है। – murtaza52