【发布时间】:2016-04-19 14:21:05
【问题描述】:
我正在将 java 脚本移动到 dart,在 java 脚本中我创建动态变量,如
window["text" + pageNumber] = 123;
alert(window["text" + pageNumber]);
我怎样才能用飞镖做到这一点?
【问题讨论】:
标签: dart
我正在将 java 脚本移动到 dart,在 java 脚本中我创建动态变量,如
window["text" + pageNumber] = 123;
alert(window["text" + pageNumber]);
我怎样才能用飞镖做到这一点?
【问题讨论】:
标签: dart
在 Dart 中Window(window 的类型)是一个类。您不能动态地将属性添加到 Dart 类。
window["text" + pageNumber] = 123; 将与 Map 一起使用。 JS 中的对象表示与地图非常相似,因此这适用于那里。
如果另一个类实现了[] 运算符,您也可以在该类的实例上调用它,但它仍然不会添加属性。它的实际作用仅取决于 [] 运算符的实现。
在 Dart 中可能有不同的方法来实现你想要的,但你没有添加关于你试图解决的实际问题的细节。
你可以在 Dart 中使用普通的全局变量,就像在 Global Variables in Dart.
对于您的用例,您可以通过这种方式创建全局 Map 变量
final Map<String,int> myGlobals = <String,int>{};
创建一个使用字符串名称存储整数值的映射。
使用myGlobals['someName'] = 123; 设置值并使用print(myGlobals['someName']); 读取它们。
如果您需要设置一个全局值,该值也可用于您可能使用的 JS 库,您可以使用dart-js-interop
import 'dart:js';
import 'dart:html';
main() {
int pagenumber = 5;
context['Window']['text$pagenumber'] = 123;
window.alert('${context['Window']['text$pagenumber']}');
}
试试DartPad。
提示:
"text" + pageNumber 在pageNumber 不是字符串时不起作用。
在 Dart 中,您不能添加字符串和数字。"text" + pageNumber.toString() 可以,但 'text$pagenumber' 是一种更大胆的方法。在字符串插值中,toString() 会自动为您调用。
【讨论】:
window 是严重的误用。这正是使用 Dart 让您摆脱的黑客攻击之一。只需创建一个全局 Map 变量并为其命名,以揭示其用途并将您的值存储在那里。我更新了我的答案。我不知道table_row_ele 变量是什么意思。