我从parse.com中查询angd get和2个对象的数组。现在我想用ng-reapet('手机中的电话'),所以我需要将它转换为json。我没有做到这一点。由于某种原因,它不会将结果视为json。
var Project = Parse.Object.extend("Project");
var query = new Parse.Query(Project);
query.find({
success: function (results) {
var allProjects = [];
for (var i = 0; i < results.length; i++) {
allProjects.push(results[i].toJSON());
}
$scope.phones = allProjects;
//i also tried this : $scope.phones = JSON.stringify(allProjects);
},
error: function (error) {
alert("Error: " + error.code + " " + error.message);
}
});
由于
答案 0 :(得分:1)
不确定你是否已经弄清楚这一点,但我遇到了类似的问题并找到了你的帖子。我不确定你的HTML是什么样的,但我最后在我的转发器中使用了Parse.Object的get方法,如下所示:
<ul ng-repeat="list in lists">
<li>
<a ng-href="#/lists/{{list.id}}">{{list.get('title')}}</a>
</li>
</ul>
我还研究了如何使用promises,以便在将$ scope.phones设置为查询结果时,Parse查询成功回调实际上会更新视图。我的代码与您的代码类似,但我的对象是List而不是Project。这就是我的样子:
// Define your Parse object
var List = Parse.Object.extend('List');
// Define a function that runs your Parse query. Use an angular promise so that
// the view updates when you set your $scope var equal to the query result
function getList() {
var deferred = $q.defer();
var query = new Parse.Query(List);
query.find({
success: function(results) {
deferred.resolve(results);
},
error: function(error) {
deferred.reject(error.message);
}
});
return deferred.promise;
}
// Call the getList function on load
var promise = getLists();
promise.then(function(lists) {
$scope.lists = lists;
});
基本上,并不是Angular没有看到正确的反应。您不必以任何方式修改Parse的结果。只需要像访问对象的属性一样使用Parse.Object get方法,并确保使用promise,以便Angular在视图中访问查询结果。
答案 1 :(得分:1)
不要在你的角度代码中使用.get函数,它不再工作,加上改变你的角度代码不是一个好主意,因为你的对象是三层嵌套的,需要一个get方法。
正确的方法是扩展对象,然后将值映射回该类中所需的任何项目。 然后你可以正常绑定到ng-repeat而不用专门为Parse更改你的html代码。
{{1}}
答案 2 :(得分:0)
可能有更好的工具frameworks可供使用。
第188行是获取。它会自动将模型的json加载到第47行定义的集合中。
在解析中查询结果中的条目在框架中全部自动化,这样您就可以通过学习相关框架(即主干)来节省大量时间。在骨干/解析上,您专注于业务逻辑,而不是操纵网络io和查询结构。
&#39;手机电话&#39;从你的问题可能只是一个嵌套模型或嵌套集合,IMO可以通过更先进的基本骨干框架操作来处理。