Tenté d'attribuer à la propriété readonly même si même commande fonctionne ailleurs?
J'ai une fonction Javascript (dans Angulaire à 2 NativeScript en fonction de l'application mobile) qui est déclenchée sur un bouton de la presse, il doit masquer le bouton et de montrer un indicateur d'activité à sa place, de porter un Bluetooth scan, qui une fois rempli éteint le voyant d'activité et affiche le bouton d'origine.
bluetoothAdd() {
this.isScanning = true;
var plusIcon = this.page.getViewById("add");
plusIcon.style.opacity = 0;
bluetooth.hasCoarseLocationPermission().then(
function (granted) {
if (!granted) {
bluetooth.requestCoarseLocationPermission();
} else {
bluetooth.startScanning({
serviceUUIDs: ["133d"],
seconds: 4,
onDiscovered: function (peripheral) {
console.log("Periperhal found with UUID: " + peripheral.UUID);
}
}).then(function () {
console.log("scanning complete");
this.isScanning = false;
plusIcon.style.opacity = 1;
}, function (err) {
console.log("error while scanning: " + err);
});
this.isScanning = false;
}
});
}
Malheureusement, la this.isScanning = false;
ligne des lancers toutes ces erreurs. Qu'ai-je fait de mal?
CONSOLE ERROR file:///app/tns_modules/angular2/src/platform/server/parse5_adapter.js:55:75: EXCEPTION: Error: Uncaught (in promise): TypeError: Attempted to assign to readonly property.
CONSOLE ERROR file:///app/tns_modules/angular2/src/platform/server/parse5_adapter.js:53:75: STACKTRACE:
CONSOLE ERROR file:///app/tns_modules/angular2/src/platform/server/parse5_adapter.js:53:75: resolvePromise@file:///app/tns_modules/zone.js/dist/zone-node.js:496:41
file:///app/tns_modules/zone.js/dist/zone-node.js:532:32
invokeTask@file:///app/tns_modules/zone.js/dist/zone-node.js:314:43
onInvokeTask@file:///app/tns_modules/angular2/src/core/zone/ng_zone_impl.js:35:51
invokeTask@file:///app/tns_modules/zone.js/dist/zone-node.js:313:55
runTask@file:///app/tns_modules/zone.js/dist/zone-node.js:214:58
drainMicroTaskQueue@file:///app/tns_modules/zone.js/dist/zone-node.js:432:43
promiseReactionJob@[native code]
UIApplicationMain@[native code]
start@file:///app/tns_modules/application/application.js:233:26
file:///app/tns_modules/nativescript-angular/application.js:65:26
ZoneAwarePromise@file:///app/tns_modules/zone.js/dist/zone-node.js:542:38
nativeScriptBootstrap@file:///app/tns_modules/nativescript-angular/application.js:64:23
anonymous@file:///app/main.js:5:36
evaluate@[native code]
moduleEvaluation@[native code]
[native code]
promiseReactionJob@[native code]
CONSOLE ERROR file:///app/tns_modules/zone.js/dist/zone-node.js:419:27: Unhandled Promise rejection: Attempted to assign to readonly property. ; Zone: angular ; Task: Promise.then ; Value: TypeError: Attempted to assign to readonly property.
CONSOLE ERROR file:///app/tns_modules/zone.js/dist/zone-node.js:421:23: Error: Uncaught (in promise): TypeError: Attempted to assign to readonly property.
CONSOLE LOG file:///app/Pages/Home/home.component.js:99:32: scanning complete
OriginalL'auteur George Edwards | 2016-04-15
Vous devez vous connecter pour publier un commentaire.
Le problème est qu'une fois que vous entrez dans la Promesse vos sont dans un contexte différent; le "il" ne pointe plus vers le "ce" vous pensiez qu'il fait, donc vous devez enregistrer le "présent" dans une autre variable; certaines personnes utilisent le "qui", le "soi" ou même "_ce"...
Donc la solution à ce problème est d';
Mise à jour pour ES6 méthode, Vous pouvez également utiliser ES6 flèche fonctions
=>
Par exemple, vous pouvez modifier la première ligne présente:
Dans ce cas, parce que vous avez utilisé un ES6 flèche en fonction de la
this
sera automatiquement à partir de la portée parent; et puis, vous n'avez pas besoin d'utiliser leself
,_this
, outhat
astuces.De NativeScript 2.4 ES6 est appuyé à la fois sur iOS et Android.
OriginalL'auteur Nathanael