2013-06-10 2 views
0

내가하려는 것은 페이지가로드 될 때 사용자에게 모든 "연락처"목록을 보여줄 것입니다. 공정한 코드가 있으므로 모든 코드를 넣으십시오. HERE은로드 방법입니다.StackMob에서 Handlebars.js 사용하기

$(window).load(function() { 
     var Contacts = StackMob.Model.extend({ schemaName: 'contacts' }); 
     var myContacts = new Contacts(); 
     var q = new StackMob.Collection.Query(); 
     q.orderAsc('firstname'); //sort by firstname in ascending order 
     myContacts.query(q, { 
      success: function (model) { 
       console.log(model.toJSON()); 

       for (var i = 0; i < model.length; i++) { 
        var data = ({ 
         FirstName: model[i].attributes.firstname, 
         LastName: model[i].attributes.lastname, 
         Pno: model[i].attributes.phoneno, 
         Emails: model[i].attributes.email, 
         objIdel: model[i].contacts_id, 
         objIdeit: model[i].contacts_id 
        }); 
        var template = Handlebars.compile($('#template').html()); 

        var html = template(model); 

        $("#contacts").append(template(data)); 
       } 
      }, 
      error: function (model, response) { 
       console.debug(response); 
      } 
     }); 
    }); 

console.log (model.toJSON()); 내가 기대할 수있는 것을 보여 주지만 그것은 for 루프에 전혀 들어갈 것 같지 않습니다.

편집 : 나는 루프 제거하고 내가

var data = ({ 
         FirstName: model.attributes.firstname, 
         LastName: model.attributes.lastname, 
         Pno: model.attributes.phoneno, 
         Emails: model.attributes.email, 
         objIdel: model.contacts_id, 
         objIdeit: model.contacts_id 
        }); 

편집 입력에 어떤 값을 하나의 접촉을 얻을 수 아래의 코드를 사용하여 얻을 경우 : 내가 접촉하여 콘솔의 FIRSTNAME을 얻을 수 있었다 .log (results.attributes [0] [ "firstname"]); 문제는 루프에 들어 가지 않는 이유를 파악할 수 없다는 것입니다.

루프없이 코드를 테스트 한 결과 처음으로 계획 한대로 작업 한 첫 번째 연락처의 템플릿을 만들었지 만, 왜 루프를 거치지 않는지 파악할 수 없습니다. Link to a more up to date version of the code

답변

1

이 작업을 수행하는 방법에 대해 ... 각 객체를 가져 오기 위해 jsonData를 반복합니다. 핸들 바가 JSON 객체 또는 JSON 문자열을 기대하는지 확신 할 수 없으므로 각각을 console.log에 출력합니다.

var Contact = StackMob.Model.extend({ schemaName: 'todo' }); 
var Contacts = StackMob.Collection.extend({ model: Contact }); 

var q = new StackMob.Collection.Query();  
q.orderAsc('name'); //sort by firstname in ascending order 

var myContacts = new Contacts(); 
myContacts.query(q, { 
    success: function (data) { 

    jsonData = data.toJSON(); 

    for (var i = 0; i < data.length; i++) { 
     var obj = jsonData[i]; 
     console.log(obj); 
     console.log(JSON.stringify(obj)); 
    } 

    }, 
    error: function (model, response) { 
    console.debug(response); 
    } 
}); 
+0

감사합니다. 내가 한 일은 데이터가있는 곳입니다. 길이, Object.length를 사용했고 이전 예제에서 사용한 코드의 측면에서 작동했습니다. –