内からテンプレートを更新しようとしていjs.Callback
ます。私がcities.add("test")
自分から行うmain()
と、正常に機能し、テンプレートを文字列で更新しますが、コールバック内で同じことを行うと、テンプレートは更新されません。Parse.comの Javascript API を使用しようとしています。ログインが機能し、クエリからオブジェクトを取得することもできます。私は Dart を学び始めたばかりなので、私が見逃しているのは明らかなことでしょうか?
更新: js.retain(Parse) を呼び出してから、dispatch() を呼び出すことで問題が解決しました。以下の解決策を実行します。
myDart.html :
<template iterate="city in cities"> {{city}} </template>
myDart.dart :
import 'dart:html';
import 'package:web_ui/web_ui.dart';
import 'package:js/js.dart' as js;
var Parse = js.context.Parse;
List<String> cities = new List();
void main() {
js.retain(Parse); //Solution to problem (1/2)
Parse.initialize("id", "key");
if(Parse.User.current() == null) {
Parse.User.logIn("user", "password",
js.map({
"success": new js.Callback.once((user) => parseData()),
"error": new js.Callback.once((user,error) => print(error.message))
})
);
}
else
parseData();
cities.add("hej");
}
void parseData() {
//Get Cities
var City = Parse.Object.extend("City");
var query = new js.Proxy(Parse.Query, City);
query.equalTo(js.map({"ACL" : Parse.User.current()}));
query.find(
js.map({
"success": new js.Callback.once((array){
for (var i=0; i < array.length; i++){
String cityName = array[i].get("name");
cities.add(cityName);
dispatch(); //Solution to problem (2/2)
}
}),
"error": new js.Callback.once((object,error) => print(error.message))
})
);
}