2014-06-28 23 views
1

我需要在模型爲空時隱藏下拉列表,並在模型中存在值時顯示它。當angularjs中的模型爲空時,如何隱藏下拉列表?

  1. 我有一個服務來獲取值。

     
    angular.module('myApp.services', ['ngResource']) 
        .factory('OptionsSelect', ['$resource', 
         function ($resource) { 
          return $resource('http://myapi/miapp/optionselect/1', {}, { 
           query: { 
            method: 'GET', 
            params: { id: '1' }, 
            isArray: false 
           } 
          }); 
         } 
        ]) 
    
  2. 可能的結果是:

     
    {"1":"red","5":"blue","34":"blue"} 
    

<pre> 
{} 
</pre> 
  1. 在控制器:

     
    $scope.optionsSelect = OptionsSelect.query(); 
    
  2. 的觀點是:

     
    <div class="form-group" ng-hide="isHide()"> 
        <select class="form-control" ng-options="key as value for (key, value) in optionsSelect"> 
    </div> 
    

    您可以查看的jsfiddle代碼:​​

+0

您的查詢表明,它期待一個陣列('IsArray的:TRUE'),但你的結果不是一個數組,它只是一個東西。這會導致錯誤。 – Jerrad

+0

你是對的,但是是一個錯字,在我的真實代碼中,我有「isArray:false」並且不起作用。謝謝。 – DAVINCHI

回答

0

您好我已經創建jsbin你請看看。你應該添加模型給你選擇指令並使用$ promise,如下所示。我希望這會有所幫助。

HTML:

<div class="form-group" ng-show="optionsSelect"> 
    <select class="form-control" 
      ng-model="option.color" 
      ng-options="key as value for (key, value) in optionsSelect"> 
</div> 

JS:

app.controller('firstCtrl', function($scope, OptionsSelect){ 
    $scope.optionsSelect = {}; 

    OptionsSelect.query().$promise.then(function(optionSelectCollection){ 

    angular.copy(optionSelectCollection, $scope.optionsSelect); 
    }); 




}); 
+0

對不起,但不行。 如果我定義控制器內部的模型是可以的。但是當我從OptionsSelect.query()獲取數據時沒有。 – DAVINCHI

+0

您可以嘗試使用optionSelect.length> 0。什麼不工作,我總是顯示或總是隱藏? – sylwester

+0

對不起,ng-show =「optionsSelect」不起作用。 – DAVINCHI

0

因此,這些選擇optionsSelect對象是不確定的,他們留不確定,如果不返回任何成爲對象,如果事情返回。如果它們未定義,你可以隱藏它們嗎?如本小提琴... http://jsfiddle.net/LMJXC/40/

<div class="form-group" ng-hide="optionsSelect === undefined"> 

<div class="form-group" ng-hide="optionsSelect2 === undefined"> 
+0

謝謝你。你的解決方案很好。但在我的代碼中,我沒有一個未定義的結果,我有這個:http://www.preproduccion.es/angular-demos/drop-down-list/error/img2.png。解決方案是來自sylwester的http://jsfiddle.net/LMJXC/41/ – DAVINCHI