dart - 可观察到的列表未从js回调更新

标签 dart parse-platform

我正在尝试从js.Callback中更新模板。当我从cities.add("test")执行main()时,它工作正常,并使用字符串更新了我的模板,但是在回调中执行相同操作,模板未更新。我正在尝试使用Parse.com中的Javascript API。登录也可以从查询中获取对象。我刚开始学习Dart,所以也许我很想念这件事?

更新:通过调用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))
    })    
  );
}

最佳答案

您的代码似乎有2个问题:

  • ,您应该通过回调更新列表后再调用 watcher.dispatch()
  • 顶级变量Parse是在回调中使用的js.Proxy。必须保留此代理(使用js.retain(Parse)),以在当前eventloop之外使用,否则您将收到类似js ref无效的错误。
  • 关于dart - 可观察到的列表未从js回调更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16372621/

    相关文章:

    javascript - 如何制作 Parse.Query.AND?

    flutter - TypeAdapterGenerator :- Missing concrete implementation of 'getter TypeAdapter. typeId 尝试实现缺少的方法

    android - 错误:入口点不包含主要功能

    javascript - 使用 Parse SDK 的匿名用户

    ios - 检查解析密码

    node.js - 如何在 pm2 集群中使用 ParseLiveQuery?

    parse-platform - 在保存到 Parse.Cloud.beforeSave 之前,如何将照片调整为多种照片尺寸

    Flutter:setState() 在封闭函数返回之前不会执行

    flutter - 变式和AssetImage在抖动中不起作用

    dart - 如何在dart中处理来自js的嵌套对象(新的dart-js-interop)