Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何在a内制作省道纸按钮<;模板>;看得见的_Dart_Polymer - Fatal编程技术网

Dart 如何在a内制作省道纸按钮<;模板>;看得见的

Dart 如何在a内制作省道纸按钮<;模板>;看得见的,dart,polymer,Dart,Polymer,我想使用聚合物纸张按钮。它在程序的顶层使用,例如,不在另一个polymerement中使用 如何为该纸张按钮注册onClick或onTap处理程序?PaperButton类中不存在此类方法,HTML文件中的属性声明不可能超出polymerement派生类的范围 除非您使用指令。版本适用于正常的但我不知道如何显示 下面是显示问题的最简单代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8">

我想使用聚合物
纸张按钮
。它在程序的顶层使用,例如,不在另一个
polymerement
中使用

如何为该
纸张按钮注册
onClick
onTap
处理程序?
PaperButton
类中不存在此类方法,HTML文件中的属性声明不可能超出
polymerement
派生类的范围

除非您使用
指令。
版本适用于正常的
但我不知道如何显示

下面是显示问题的最简单代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">

  <title>Paper Button</title>

  <link rel="import" href="packages/polymer/polymer.html">
  <link rel="import" href="packages/paper_elements/paper_button.html">
</head>

<body unresolved>
  <template is="auto-binding-dart">
    <paper-button id="mybutton" on-tap="{{buttonTap}}">Button</paper-button>
  </template>

  <script type="application/dart">
    import 'dart:html';
    import 'package:polymer/polymer.dart';
    import 'package:template_binding/template_binding.dart';

    main() {
      initPolymer().run(() {
        Polymer.onReady.then((_) {
          var template = document.querySelector('template');
          templateBind(template).model = new MyModel();
        });
      });
    }

    class MyModel extends Observable {
      buttonTap() => print('Clicked!');
    }
  </script>
</body>
</html>

纸扣
按钮
导入“dart:html”;
进口“包装:聚合物/聚合物.dart”;
导入“package:template_binding/template_binding.dart”;
main(){
initPolymer()运行(){
聚合物。onReady。然后((){
var template=document.querySelector('template');
templateBind(template.model=newMyModel();
});
});
}
类MyModel扩展了可观测{
buttonTap()=>打印('Clicked!');
}
如果我将其从
纸张按钮
更改为
按钮
,并删除
纸张按钮
的导入语句,则其工作正常。但是如何使用
纸按钮
或任何类型的聚合物元素来实现这一点呢?

更新 您在注释中提到的错误消息使用下面建议的代码


第一行创建运行时错误

NoSuchMethodError:找不到方法:“模型=”

第二个建议产生了错误

异常:>未捕获错误:“TemplateElement”类型不是“template”的“AutoBindingElement”类型的子类型

指示
querySelector('template')
不返回
,而是返回其他
模板
元素(导入的
纸张按钮
元素)

相反,使用不同的选择器(例如id)可以解决问题

古老的 这看起来不错,但这一行对我来说似乎是错误的(但如果它适用于按钮,那么它也应该适用于
纸张按钮

templateBind(template.model=newmymodel();
反而

template.model=new MyModel();
太好了! 应该做 或

autobindingement template=document.querySelector('template');
template.model=新的MyModel();
防止关于不存在的
模型的提示

您不应该需要此导入(仅在您自己的元素中)



我从不使用内联脚本。这可能会导致问题。

第一行创建了一个运行时错误
NoSuchMethodError:method not found:'model='
。第二个建议创建了错误
异常:未捕获错误:“TemplateElement”类型不是“template”的“autobindingement”类型的子类型。
可能您会得到另一个templateate元素(来自导入的
纸张按钮的元素)
?)。能否尝试将
id
分配给
模板
,并更改选择器,使其使用id而不是标记名?是的,导入的
纸张按钮的模板提示将其锁定!使用
id
检索模板解决了问题!