2017-05-30 19 views
0

私は私のアプリのためのシンプルな製品注文フォームを作ろうとしています。私は製品の名前と価格(データベース内の別々のフィールド)を示すIonicポップアップで選択要素を持っています。今私は、データベースに注文を格納するクエリをINSERTするためにユーザーが選択した製品の3番目の情報(ID)を転送する必要がありますが、私はそれを行うように見えません。誰かが私がここで間違ってやっているものを私に伝えることができます:$ scope.data.selectedが設定されていないためAngularJS - 選択から選択されたオプションを取得

$scope.openPopup = function(id, name){ 
    $scope.data = {}; 

    // Custom popup 
    var myPopup = $ionicPopup.show({ 
    template: 'Choose product: <select ng-model="data.selected">\n\ 
            <option ng-repeat="product in products" ng-value="product.id">{{product.name}} - Price: {{product.price}}€</option>\n\ 
            </select>', 
    title: 'Order form', 
    scope: $scope,  
    buttons: [ 
     { text: 'Cancel' }, { 
      text: '<b>Save</b>', 
      type: 'button-positive', 
       onTap: function(e) { 

       if (!$scope.data.selected) { 
        //don't allow the user to close unless he enters model... 
        console.log("no data"); 
         e.preventDefault(); 
       } else { 
        console.log("Product: " + $scope.data.selected); 
        var selectedProduct = $scope.data.selected; 
        // INSERT query here 
        }, function (err) { 
         console.error(err); 
        }); 
       } 
       } 
     } 
    ] 
    }); 
    myPopup.then(function(res) { 
    console.log('Tapped!', res); 
    });  
}; 

問題があり、コードは、他の分岐には行きません。しかし、SELECT要素のng-modelをOPTION要素idにバインドするべきではありませんか?私は、ng-optionsの使用もオプションであると聞いてきましたが、1つのオプション要素に複数の値を表示できるかどうかはわかりません。

コードは、ファイルの前半部分から製品を取得していますが、これはうまくいきます(選択要素に製品名が表示されているため)。

答えて

0

コードはOKのようですが、$scope.data.selectedのデフォルト値を選択していないようです。したがって、ユーザがオプションを選択せず​​にonTapを実行すると、$scope.data.selectedは空になります。

また、IDは0でもかまいませんか?その場合は、if (!$scope.data.selected)ブランチが実行されます。

+0

私はオプションを選択してテストしましたが、すべてのIDは0以上です。なぜそれが得られないのか分かりません。 – sakke221

関連する問題