Angularjs ng使用Parse.Cloud.run()重复绑定中断
总结问题:Angularjs ng使用Parse.Cloud.run()重复绑定中断,angularjs,data-binding,parse-platform,angularjs-ng-repeat,Angularjs,Data Binding,Parse Platform,Angularjs Ng Repeat,总结问题: 使用AngularJS 1.3.15 使用Parse.com库1.4.2 当底层结构更新时,绑定到我的控制器的屏幕上的输出未更新 我的HTML很简单-我使用ng repeat从控制器中的数组输出字符: <body ng-controller="MainCtrl as main"> <div ng-repeat="char in main.chars"> {{char}} </div> </body>
- 使用AngularJS 1.3.15
- 使用Parse.com库1.4.2
- 当底层结构更新时,绑定到我的控制器的屏幕上的输出未更新
我的HTML很简单-我使用
ng repeat
从控制器中的数组输出字符:
<body ng-controller="MainCtrl as main">
<div ng-repeat="char in main.chars">
{{char}}
</div>
</body>
app.controller('MainCtrl', ['httpFactory', 'parseFactory', function(httpFactory, parseFactory){
var main = this;
main.chars = ["I", "n", "i", "t"];
// httpFactory.getArray().then(function(arrHttp){
// main.chars = arrHttp;
// console.log("HTTP --> " + main.chars);
// });
parseFactory.getArray().then(function(arrParse){
main.chars = arrParse;
console.log("PARSE -> " + main.chars);
});
注意,在这个例子中,我在承诺中返回硬编码的值,以排除Web服务本身的任何问题
解析云函数没有什么特别之处。它来自基本模板-函数hello
正确返回预期的“hello,world!”
我的控制器,
MainCtrl
非常简单。我用一个初始值实例化chars
数组
我依次调用每个factory服务,使用返回值更新我的chars
数组,更新完成后我将其注销
调用httpFactory.getArray(),因为它完全按照预期工作:
数组已正确更新chars
- 绑定HTML显示更改(从“Init”更改为“Yes”)
- 控制台日志输出为“HTTP-->Y、e、s”
- 我已经将其注释掉,以排除此代码块中的任何交互
parseFactory.getArray()
的调用基本上按照预期工作:
数组已正确更新chars
- 控制台日志输出为“解析->N,o”
<body ng-controller="MainCtrl as main">
<div ng-repeat="char in main.chars">
{{char}}
</div>
</body>
app.controller('MainCtrl', ['httpFactory', 'parseFactory', function(httpFactory, parseFactory){
var main = this;
main.chars = ["I", "n", "i", "t"];
// httpFactory.getArray().then(function(arrHttp){
// main.chars = arrHttp;
// console.log("HTTP --> " + main.chars);
// });
parseFactory.getArray().then(function(arrParse){
main.chars = arrParse;
console.log("PARSE -> " + main.chars);
});
根据文档,
Parse.Cloud.run()
。从控制台日志输出来看,情况似乎就是这样
但是绑定的输出不会更新
这是AngularJS、Parse的问题还是我使用它们的方式的问题?
更新 我已将此问题作为一个错误记录在Parse中。将根据他们的反馈更新此帖子
MainCtrl
控制器中添加$scope
依赖项后,绑定开始工作
代码
app.controller('MainCtrl', ['httpFactory', 'parseFactory', '$scope',
function(httpFactory, parseFactory, $scope) {
不要调用
Parse.Cloud.run()
它们给出了以下示例代码:
curl -X POST \
-H "X-Parse-Application-Id: 4vwhWtM5Sf3ExRvXMkRI04jJj8r2ZETuBQYhiYGo" \
-H "X-Parse-REST-API-Key: EX6MWjSEblsrHsJCqBZ1AevuTKz0ZlWLHPMloZqD" \
-H "Content-Type: application/json" \
-d '{}' \
https://api.parse.com/1/functions/hello
基于此,我修改了parseFactory
以使用$http
而不是Parse.Cloud.run()
:
这完全符合预期。有趣的是,我让Plunker使用原始代码?!添加$scope
后,它开始工作,删除$scope
后,它继续工作。你认为这可能取决于浏览器吗?我用的是Chrome,但试过IE,运气不好;两种方法都不起作用。看起来它在Plunker中工作,但在真正的浏览器中不起作用;添加$scope
没有帮助。每当我站在machinenote面前时,我都会查看它——当我用$http调用他们的API时,一切都正常。表明解析本身存在问题,不确定是否值得在这方面花费太多时间,除非您真的想。您是否觉得Parse.Cloud.run()
@pankajparkar有问题,这是我的看法。工作代码和中断代码之间的唯一区别是Parse.Cloud.run()
。