मैं कोणीय/आयनिक के लिए नया हूं। मेरे ऐप के लॉन्च पर, कोणीय/आयनिक का उपयोग करने से पहले, मैं जांच कर रहा था कि क्या हम फोनगैप या ब्राउजर के तहत थे और इस जानकारी का उपयोग ग्लोबल बूलियन वैरिएबल में करते हैं और फिर यह जांचते हैं कि ऐप ऑनलाइन या ऑफ़लाइन था या नहीं वैश्विक चर भी, इस तरह:angularjs आयनिक और वैश्विक चर: वैश्विक स्तर पर एक चर उपलब्ध कराने के लिए सर्वोत्तम अभ्यास
var isPhoneGap;
var connectionStatus;
isPhoneGap = checkIfPhoneGap();
//later in the code :
connectionStatus = checkIfOnline();
function checkIfPhoneGap() {
var app = document.URL.indexOf('http://') === -1 && document.URL.indexOf('https://') === -1; // && document.URL.indexOf('file://');
if (app) {
return true;
} else {
return false;
}
}
function checkIfOnline() {
if (isPhoneGap) {
if (checkConnection() == "none") {
connectionStatus = 'offline';
} else {
connectionStatus = 'online';
}
function checkConnection() {
var networkState = navigator.network.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
//console.log('Connection : ' + Connection);
//console.log('Connection type: ' + states[networkState]);
return networkState;
}
} else {
connectionStatus = navigator.onLine ? 'online' : 'offline';
}
return connectionStatus;
}
अब मैं कोणीय/आयोनिक साथ भी ऐसा ही चाहते, मैं समझता हूँ कि मैं एक "सेवा" का उपयोग करना होगा होगा। लेकिन क्या यह जानकारी सभी कोड के माध्यम से उपलब्ध कराने का सबसे अच्छा तरीका है?
मैं निम्नलिखित कर रहा हूं, लेकिन क्या यह "सर्वोत्तम अभ्यास" है?
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/services.js"></script>
services.js में:
angular.module('SnowBoard.services', [])
.factory('isPhoneGap', function() {
var appp = document.URL.indexOf('http://') === -1 && document.URL.indexOf('https://') === -1; // && document.URL.indexOf('file://');
if (appp) {
return true;
} else {
return false;
}
})
;
app.js में:
index.html मेंangular.module('SnowBoard', ['ionic', 'SnowBoard.controllers', 'SnowBoard.services'])
.run(["isPhoneGap","$ionicPlatform", function(isPhoneGap, $ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if(window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
});
//CHECK IF ONLINE
connectionStatus = checkIfOnline(isPhoneGap);
//DEBUG
//var debugOptionUseLocalDB=0;
//updateProDB(connectionStatus, debugOptionUseLocalDB);
}])
.config(function($stateProvider, $urlRouterProvider) {
//...all state configurations
})
.config(function($stateProvider, $urlRouterProvider) {
//...
});
यह अब के लिए काम करता है, लेकिन मैं बूलियन की जरूरत isPhoneGap
हर जगह उपलब्ध होने के लिए मुझे इसकी आवश्यकता है (लगभग मेरे ऐप में लगभग हर जगह)।
क्या आप ऐसा करने के लिए सबसे अच्छा अभ्यास कर सकते हैं?
धन्यवाद
हाय, आपके उत्तर के लिए धन्यवाद। लेकिन क्या कोणीय के साथ किसी प्रकार का "ग्लोबल वैरिएबल" उपयोग करने का कोई तरीका नहीं है? मेरा मतलब ये चर है, मुझे कोड में हर जगह उनकी आवश्यकता है (और कई टैब में भी)। – Louis
हां, वहाँ है। नहीं, आपको इसका इस्तेमाल नहीं करना चाहिए। जावास्क्रिप्ट ग्लोबल्स को अच्छी तरह से उधार नहीं देता है। सबसे अच्छा अभ्यास नियंत्रकों के बीच डेटा साझा करने के लिए कारखाने या सेवा का उपयोग करना है। हैक $ rootScope का उपयोग करना है। – Owen
मैंने अभी अपना कोड अपडेट किया है, क्योंकि अगर और कोई त्रुटि हुई है। और अब मेरे पास कोणीय से एक और त्रुटि है: 'असहज त्रुटि: [$ इंजेक्टर: unpr] अज्ञात प्रदाता: $ cookieStoreProvider <- $ कुकीस्टोर <- sessionService <- updateProDB' क्या आप इसे ठीक करने में मेरी सहायता कर सकते हैं? – Louis