2015-01-16 2 views
1

몇 시간 동안 노력했지만이 방법을 잘 모릅니다. 내 코드는 다소 가깝게 보이지만 HTML에서 컨트롤러로 내 선택을 전달할 수는 없습니다.두 개의 드롭 다운 필터. 첫 번째는 두 번째 정보를 결정합니다.

내 각도 코드 :

var Categories = Parse.Object.extend("bizCategories"); 

     $scope.categories = [ 
      {category: "Food and Drink"}, 
      {category: "Healthcare"}, 
      {category: "Recreation"}, 
      {category: "Service"}, 
      {category: "Shops"}, 
      {category: "Travel"} 
     ] 

     $scope.setPrimary = function (category) { 
      $scope.offer.primary = category; 
      $scope.secondaryCategories(category); 
     }; 

     $scope.secondaryCategories = function(category){ 
      var Secondary = new Parse.Query(Categories); 
      Secondary.limit(1000); 
      Secondary.find({ 
       success:function(list){ 
        $scope.SecondaryCategories = _.uniq(_.filter(_.map(list, function(item){ 
         return{primary: item.get('secondary') 
         }} 
        )),'primary',true) 
        console.log($scope.SecondaryCategories); 
       }, 
       error: function(error){alert("A mistake was made."); 
       } 
      }) 
     } 

내 HTML :

<select id= 'primary' ng-model="offer.primary" ng-options="XXX.category for XXX in categories" 
       ng-click= setPrimary(category)> 
      <option value="">Primary Business Category</option> 
     </select> 

     <select id= 'secondary' ng-model="offer.secondary" ng-disabled="!offer.primary" 
       ng-options="XXX.category for XXX in SecondaryCategories" ng-click="setSecondary('XXX.category')"> 
      <option value="">Secondary Business Category</option> 
     </select> 

당신은 내가 NG-옵션에 대한 내 HTML에서 XXX를 집어 것을 볼 수 있습니다. 내가 튜토리얼에서 말할 수있는 것부터 특히 무엇이라도 부를 수있는 목적이 임의적이기 때문에 이것을 골랐다. 나는이 XXX을 그 문제가 아닌 것으로 만들었다. 또한, 첫 번째 드롭 다운에서 정보를 두 번째 드롭 다운 (범주)에 대한 기능을 수행해야하지만 그것은 정의되지 않은 것으로 나타납니다.

데이터 소스 : 당신은 당신은 ng-change 대신 ng-click 사용해야합니다 (1)의 선택에 다른 드롭 다운을 설정하려고처럼

Primary is the first selection criteria and exists as array in the first controller. Secondary is filtered using primary; it's a many to many relationship.

답변

2

보인다.

시도 : - 이후

<select id= 'primary' ng-model="offer.primary" ng-options="XXX.category for XXX in categories" 
      ng-change= setPrimary(category)> 
     <option value="">Primary Business Category</option> 
    </select> 

    <select id= 'secondary' ng-model="offer.secondary" ng-disabled="!offer.primary" 
      ng-options="XXX.category for XXX in SecondaryCategories" ng-change="setSecondary('XXX.category')"> 
     <option value="">Secondary Business Category</option> 
    </select> 

당신의 ng-model가 이미 offer.primary에 바인딩, 이미 설정되었을 NG 모델부터 $scope.offer.primary = category; 일을 피할 수 있습니다.

+0

감사합니다. ng-change는 선택한 값을 드롭 다운에서 모델로 전달할 때 매우 유용했습니다. secondCategories 함수를 수정하는 지침은 두 번째 드롭 다운에서 필터링의 두 번째 라운드를 수행합니까? – rashadb

+0

@rashadb 질문에 언급하지 않았습니다. 그 문제는 무엇이며, 그곳에서 무엇을하고 있습니까? 이 질문이 원래의 질문에 대한 답 이었습니까? – PSL

+0

PSL - 나와 함께 돌아와 줘서 고마워. 그것은 그것의 일부에 응답했다. 나는 이제 내가 선택한 것이 무엇이든지 주된 기능으로 들어간다는 것을 안다. 그러나 내가하려고하는 주요한 일이 secondaryCategories 함수에 그 정보를 얻을 수 없습니다. 이 어젯밤에 후속 조치를 올렸습니다. https://stackoverflow.com/questions/27979200/i-cant-render-my-second-and-dependent-dropdown 문제는 첫 번째 드롭 다운에서 offer.primary가 프로그래밍 방식으로 제자리에 떨어지게됩니다. secondaryCategories 함수에서 '여행'으로 하드 코딩 된 내용 중 도움에 감사드립니다! – rashadb

관련 문제