Angular2 ile bir telefon uygulaması yapıyorum. Bir onay iletişim kutusu göstermek ve öğeleri angular2 görünümünden güncellemek için başarı geri çağırma göstermek istiyorum. Bunu yaptığımda hiçbir şey hemen olmaz, ancak sayfadaki diğer modeli güncellediğimde (açısal ile bağlantılı olan) güncellemem güncellenir.Açısal 2 öğe, telefon görüşmesi bildirim iletişim kutusundan değiştirildiğinde güncellenmiyor
Onay iletişim kutusu için phonegap eklentisini kullanıyorum: cordova-plugin-dialogs
ve şu yöntem çağrılıyor: navigator.notification.confirm(...)
. İşte
AboutComponent = ng.core
.Component({
selector: 'rl-about',
templateUrl: 'app/components/about/view.html',
directives: [TopBarComponent, ng.router.ROUTER_DIRECTIVES]
})
.Class({
constructor: [Config, function(config) {
this.config = config;
this.title = "About";
this.top_bar_left = "Back";
}],
/**
* Back btn
*/
topBarLeftClick: function(){
window.history.back();
},
changeMessage: function(){
this.message = "Test";
var self = this;
navigator.notification.confirm(
"Delete this?",
function(buttonIndex) {
if(buttonIndex == 1) { //1 = Ok
console.log("Message before: " + self.message) //self.message has the old value ("Test")
self.message = "Deleted";
console.log("Message after: " + self.message) //self.message has the new value ("Deleted"), but nothing changed on view.html
}
},
"Confirm Delete",
["Delete", "Cancel"]
);
}
});
Ve html şuna benzer:
<div class="page-wrapper">
<rl-top-bar [title]="title" [top_bar_left]="top_bar_left" (topBarLeftClick)="topBarLeftClick()" ></rl-top-bar>
<div class="about-info-wrapper">
<input type="text" [(ngModel)]="other_model" id="itemtoclick"/>
{{message}}
<div (click)="changeMessage()">click here</div>
</div>
</div>
{{message}}
navigator.notification.confirm
eylemci çağrıldığında güncellenmiyorsa ama eğer güncellenir Örneğin,
Açısal modele bağlı input
kutuda tıklatırım Çalıştığım bir hack geri arama çağrıldığında javascript'ten bir şey tıklamaktır. Bunun gibi: window.document.getElementById('itemtoclick').click()
.bind(this)
navigator.notification.confirm(...)
eklemeye çalışıyorum ama hata atıyor.
navigator.notification.confirm
numaralı telefonu aramadan önce bir değişkeni this
kaydetmeye çalışıyorum aynı sonuç. geri arama yöntemini kullanırsanız, aynı sonuç
Her nasılsa, bu iç çağrıya başvuruda bulunabildiğim için okuyabildiğim ve güncelleştirilebildiğim, ancak açısal2, görünümü güncelleştirmek için bir değişiklik yaptığımı bilmiyor.
Ayrıca bu sorun yalnızca mobil cihazlarda çalışıyor, tarayıcıda çalıştırmaya çalışırsam (chrome) çalışıyor. Ben android için .apk dosyası oluşturmak için phonegap kurmak kullanın. Ancak, canlı test için Phonegap mobil uygulamasını kullanırsam sorun da görünür.
Böyle bir saldırı içermeyen bir çözüm olup olmadığını bilmek istiyorum.
Düzenleme
Bu ben PhoneGap CLI sorun Android ve hem de bulunmaktadır
kullanıyorum iOS için PhoneGap yapı
kullanıyorum Android için benim ilk PhoneGap uygulaması
olduğunu iOS.
See here Ayrıca ben onDeviceReady
için this
kullanmayan değiştirmek ve sorun hala burada:
Edit 1 Nis 2016
daha iyi sorunu açıklamak için bir video oluşturdu. İşte benim ana.js kodu:
var phonegapApp = {
initialize: function() {
phonegapApp.bindEvents();
},
bindEvents: function() {
document.addEventListener('deviceready', phonegapApp.onDeviceReady, false);
},
onDeviceReady: function() {
console.log("phonegapApp onDeviceReady");
ng.platform.browser.bootstrap(AppComponent,[
ng.http.HTTP_PROVIDERS,
ng.router.ROUTER_PROVIDERS,
new ng.core.Provider(ng.router.LocationStrategy, {useClass: ng.router.HashLocationStrategy})
]);
}
};
Ve index.html
den
body
altındaki
phonegapApp.initialize();
diyoruz.
Nasıl PhoneGap bu ilişkilidir? – JesseMonroy650
@ JesseMonroy650 bir telefongap eklentisi kullandığım için: "cordova eklenti diyalogları" ve sadece bu eklentiyi kullandığımda bu problemi görüyorum. Ve sorun sadece mobilde (tarayıcıda değil). Yani bu eklenti ile ilgilidir. –
Bu önemli bilgiler yayınınızda değil. Önemli bilgileri çıkarırsanız, insanların sorununuzu çözmesini nasıl beklersiniz? – JesseMonroy650