我試圖從js.Callback
內更新我的模板。當我做cities.add("test")
從我的main()
它工作正常,並更新我的模板與字符串,但在回調模板沒有更新。我正在嘗試使用來自Parse.com的Javascript API。登錄工作,並從查詢中獲取對象。我剛開始學習飛鏢,所以也許這很明顯,我失蹤了?可觀察列表未從js更新回調
更新:通過調用js.retain(Parse)然後調度() 下面的工作解決方案解決了問題。
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))
})
);
}
你可以發佈你的'getMyCity()'方法嗎?無法重現這種奇怪的行爲。 – MarioP 2013-05-04 15:48:37
感謝您的嘗試!我用我的dart文件的完整版本更新了這篇文章。 – bullsAI 2013-05-05 09:46:31
從Parse.com的js文件中加載查詢方法(在我簡化後的文章中命名爲geyMyCity),我將該腳本加載到我的html頭部。 – bullsAI 2013-05-05 10:25:09