0

我想要做的是,当页面加载时,它会向用户显示他们所有“联系人”的列表。有相当多的代码,所以我把它都放在这里,下面只是加载方法。

$(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
                    });

编辑:我能够使用 console.log(results.attributes[0]["firstname"]); 问题是我不知道为什么它不进入循环。

我在没有循环的情况下测试了代码,它制作了一个按计划工作的第一个联系人的把手模板,但我不明白为什么它不会循环遍历它们。 链接到更新版本的代码

4

1 回答 1

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);
  }
});
于 2013-06-17T21:35:09.320 回答