2013-11-25 3 views
3

문제점을 설명하고 데이터베이스에서 직접 Ember.Select을 채우려고합니다. 내가 단일 사용자에 대한 전체 정보를 표시하고, twoduser에서Ember.Select 데이터베이스에서 직접 선택

 this.resource('twod', function() { 
      this.resource('twoduser', { 
       path : ':user_id' 
      }); 
     }); 

:

나는이 노선이있다. 이보기에는 최종 사용자가 선택할 선택 상자가 있으며 버튼을 사용하여 Ember.Select에서 선택한 팀에 사용자를 추가 할 수 있습니다. 나는이 작업을 수행하려고

에서 다음

App.TwoduserController = Ember.ArrayController.extend({ 
    selectedTeam : null, 
    team : function(){ 
     var teams = []; 
     $.ajax({ 
      type : "GET", 
      url : "http://pioneerdev.us/users/getTeamNames", 
      data : data, 
      success : function (data){ 
       for (var i = 0; i < data.length; i ++){ 
        var teamNames = data[i]; 
        teams.push(teamNames); 
       } 
      } 
     }); 
     return teams; 
    }.property() 
}) 

index.html :

  {{view Ember.Select 
    contentBinding="team" 
    optionValuePath="teams.team_name" 
    optionLabelPath="teams.team_name" 
    selectionBinding="selectedTeam" 
    prompt="Please Select a Team"}} 

나는이 작업을 수행 할 때, 어떤 이유로이 Twoduser을 방해하고 나는를 볼 수 아니다 단일 사용자. 또한

{"teams":[{"team_name":"Toronto Maple Leafs"},{"team_name":"Vancouver Canuck"}]} 

, 나는이 같은 를 사용하여 Ajax를 모든 사용자를 가져 오는 오전 : :

App.Twod.reopenClass({ 
    findAll : function() { 

     return new Ember.RSVP.Promise(function(resolve, reject) { 
      $.getJSON("http://pioneerdev.us/users/index", function(data) { 
       var result = data.users.map(function(row) { 
        return App.Twod.create(row); 
       }); 
       resolve(result); 
      }).fail(reject); 
     }); 
    }, 
    findBy : function(user_id) { 

     return new Ember.RSVP.Promise(function(resolve, reject) { 
      var user = App.Twod.create(); 
      $.getJSON("http://pioneerdev.us/users/byId/" + user_id, function(data) { 
       var result = user.setProperties(data.user); 
       resolve(result); 
      }).fail(reject); 
     }); 
    } 
}); 

한 가지 비록

은 또한, 여기에 내가 URL을 통해 얻을 것이다 샘플 JSON 응답입니다 별도의 Teams 경로가 있습니다.

this.resource('teamview', function(){ 
      this.resource('teamviewdetail', { 
       path : ':team_id' 
      }); 
     }); 

한 팀을 클릭하면 모든 팀과 한 팀이 표시됩니다.

TeamviewController을 사용할 수 있습니까? 또는 Twoduser 컨트롤러에서 팀 이름을 가져 와서 앞에서 설명한대로 이름을 배열에 푸시 할 수 있습니까?

추가 정보 :

내가 언급 한 방법을 사용하는 경우, 나는이 오류를 얻을 :

Uncaught TypeError: Object [object Object] has no method 'addArrayObserver' 
다음

상기 문제에 jsfiddle 작업 내가 경험하고의를. 지정 &에서 "Storyboard"를 선택한 다음 사용자를 선택할 수 있습니다. 그러면 문제가 재현됩니다.

하나 더 업데이트는 : 문제는 addArrayObserver 문제를 해결 ObjectController 대신 ArrayController의 사용 보인다. 하지만 여전히 엠버에서 팀을 구할 수는 없습니다. 선택하십시오.

+0

App.TwoduserController.team은'리턴 팀이 필요,'라인 –

+0

나는이 방법을 사용하는 경우, 내가, 처리되지 않는 형식 오류 오류를 얻을 : 개체 [개체 개체]있는 방법 'addArrayObserver' – user1601973

답변

2

여기서 가장 큰 문제는 pushObject 대신 Array#push을 사용한다는 것입니다. 엠버는 변화를 인식하기 위해 특별한 방법이 필요합니다. 그렇지 않으면 팀 배열이 처음 반환했을 때와 같이 비어 있다고 계속 생각할 것입니다. 두 번째로 큰 문제는 ajax success 호출이 반환 된 데이터에 제대로 액세스하지 못한다는 것입니다.

또한 optionValuePathoptionLabelPath은 개별 선택 옵션보기와 관련이 있으므로보기에 설정된 개별 항목 인 content으로 시작해야합니다.그래서 : content.team_name

+0

당신이 선택하면이 없습니다 내 바이올린, http://jsfiddle.net/qgcB7/3/. 'pushObject'를 사용해 보았습니다. 뭔가 잘못되었을 수 있습니다. – user1601973

관련 문제