2017-05-30 63 views
0

獲取選定的選項所以,我試圖爲我的應用程序做一個簡單的產品訂單。 Ionic彈出窗口中有一個select元素,它顯示產品名稱和價格(這是數據庫中的單獨字段)。現在,我需要將用戶選擇的產品的第三條信息 - 用於INSERT查詢的產品的ID存儲到數據庫中,但我似乎無法做到這一點。誰能告訴我我在做什麼錯在這裏: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); 
    });  
}; 

問題是,代碼不會去的else分支,因爲$ scope.data.selected未設置。但是不應該將SELECT元素的ng-value綁定到OPTION元素的id中?我聽說使用ng-options也是一種選擇,但是我不知道它是否能夠在一個選項元素中呈現多個值。

該代碼正在從文件的早期部分獲得產品,我不會在這裏發佈,因爲它工作正常(產品名稱出現在select元素中)。

回答

0

該代碼看起來不錯,但看起來好像沒有爲$scope.data.selected選擇默認值。因此,如果onTap在沒有用戶選擇任何選項的情況下執行,$scope.data.selected將爲空。

另外,ID可以是0嗎?如果是這樣,那麼將執行if (!$scope.data.selected)分支。

+0

我已經通過選擇一個選項來測試它,而且所有的ID都大於0.我不確定它爲什麼沒有得到它。 – sakke221