我有两个奇怪的问题:
1.-我有一个模态弹出窗口,当我打开弹出窗口时,我调用控制器并等待用户点击标签。它第一次点击,我可以听到声音,但它没有从标签中抓取任何细节。第二次以及随后的时间。它只是在我第一次点击标签时发生。
2.-第二个问题是,当我第二次扫描时,它会复制结果。让我向您展示一些解释我问题的代码:
<ion-content>
...
</ion-content>
<ion-footer-bar class="bar-positive" ng-if="showFooter" ng-controller="NFCCtrl">
<div>
<button ng-click="openModal(1)" class="button button-icon">
TEST
</button>
</div>
</ion-footer-bar>
<script id="nfc.html" type="text/ng-template">
<div class="modal">
<header>
<h1 class="title">NFC</h1>
<div class="button button-clear" ng-click="closeModal(1)"><span class="icon ion-close"></span></div>
</header>
<ion-content>
<div>
...
</div>
</ion-content>
</div>
</script>
.controller('NFCCtrl', function ($scope, $ionicModal, $ionicPlatform) {
$ionicModal.fromTemplateUrl('nfc.html', {
id: '1',
scope: $scope,
backdropClickToClose: false,
animation: 'slide-in-up'
}).then(function (modal) {
$scope.oModal1 = modal;
});
$scope.openModal = function (index) {
if (index == 1) {
$scope.oModal1.show();
try {
navigator.geolocation.getCurrentPosition(function (result) {
$scope.position = result.coords;
$scope.$apply();
alert('modal opened!');
//////////////////////////
nfc.addNdefListener(function (nfcEvent) {
var tag = nfcEvent.tag,
ndefMessage = tag.ndefMessage;
var ndef_value = nfc.bytesToString(ndefMessage[0].payload).substring(1);
var some_value = ndefMessage[0]["payload"];
var string_value = nfc.bytesToString(some_value);
alert('hello world!');
// Insert value to DB
...
当模态弹出窗口打开时,我可以看到alert('modal opened!');
。然后我点击NFC,我得到了alert('hello world!');
。到目前为止一直很好,现在我点击另一个标签,我得到了alert('hello world!');
TWICE。然后我再次点击,我得到它3次,另一次点击然后4次,依此类推。我还没弄清楚为什么要添加重复项:(