输入值不会更新

时间:2015-05-16 10:20:28

标签: android angularjs ionic-framework ionic

查看:

<ion-view cache-view="false" view-title="Ustawienia" >
    <ion-content ng-controller="AccountCtrl">
        <div class="list">
            <label class="item item-input item-floating-label">
                <span class="input-label">Adres serwera</span>
                <input type="text" placeholder="Adres serwera">
            </label>
            <label class="item item-input item-floating-label">
                <span class="input-label">Klucz API</span>
                <input type="text" ng-model="apikey"  placeholder="Klucz API">
            </label>
        </div>
        <div class="padding">
            <button ng-click="scan()" class="button button-block button-energized">
                Skanuj Kod
            </button>
            <button class="button button-block button-positive">Zapisz</button>
        </div>
    </ion-content>
</ion-view>

控制器:

.controller('AccountCtrl', function($scope) {
/*    $scope.settings = {
        enableFriends: true
    };*/
    $scope.apikey = '';
    //scan
    $scope.scan = function () {
        //$scope.apikey.value = "test";
        cordova.plugins.barcodeScanner.scan(
         function (result) {
             $scope.apikey= result.text;

         },
         function (error) {
             alert("Błąd podczas skanowania!");
         }
      );
    };
    console.log($scope.apikey);
});

扫描后输入值不会改变。 如果我在菜单输入值更改中更改选项卡。 任何刷新问题还是什么? 扫描更改输入值后我想要。

1 个答案:

答案 0 :(得分:1)

您必须使用$scope.apply包装代码,因为框架需要执行适当的范围生命周期。

$scope.scan = function () {
    //$scope.apikey.value = "test";
    cordova.plugins.barcodeScanner.scan(
     function (result) {
        $scope.apply(function() {
             $scope.apikey = result.text;
        }); 
     },
     function (error) {
         alert("Blad podczas skanowania!");
     }
   );
};

您可以在official documentation中了解更多相关信息。