2013-01-07 101 views
2

我收到以下錯誤:是什麼導致NoSuchMethodErrorImplementation?

Stack Trace: #0  NoSuchMethodErrorImplementation._throwNew (dart:core-patch:641:3) 
#1  init_autogenerated (http://127.0.0.1:3030/C:/dev/CalendarDatePicker/CalendarDatePicker/web/out/CalendarDatePicker.dart:43:26) 
#2  main (http://127.0.0.1:3030/C:/dev/CalendarDatePicker/CalendarDatePicker/web/out/CalendarDatePicker.html_bootstrap.dart:7:30) 

這裏是我的視圖代碼:

<!DOCTYPE html> 

<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>CalendarDatePicker</title> 
    <link rel="stylesheet" href="CalendarDatePicker.css"> 
    </head> 
    <body> 
    <element name="calendar" constructor="Calendar" extends="div"> 
     <template> 
     <table> 
      <tr> 
      <th>Sun</th> 
      <th>Mon</th> 
      <th>Tue</th> 
      <th>Wed</th> 
      <th>Thu</th> 
      <th>Fri</th> 
      <th>Sat</th> 
      </tr> 
     </table> 
     </template> 
    </element> 
    <div is="calendar"></div> 
    <script type="application/dart" src="CalendarDatePicker.dart"></script> 
    <script type="text/javascript" src="https://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script> 
    </body> 
</html> 

這是我的主要腳本:

import 'dart:html'; 
import 'dart:core'; 
import 'package:web_ui/web_ui.dart'; 


void main() { 

} 

class Calendar extends WebComponent 
{ 

} 

它在自動失效生成此行的代碼:

new Calendar.forElement(__e0) 
    ..created_autogenerated() //Exception: No such method: 'Calendar.forElement' 
    ..created() 
    ..composeChildren(); 

回答

4

你應該改變<element>name,使其與x-開始:

<element name="x-calendar" constructor="Calendar" extends="div"> 

<div is="calendar"></div>到:

<x-calendar></x-calendar> 

或者你可以使用is=語法,如果你喜歡。

這些是建議的更改,但不能解決問題。這樣的工作的方式是,如果

class Calendar extends WebComponent {} 

走到<element>本身內(截至<template>兄弟姐妹)一個<script>標籤內。

另一種方法是將組件代碼分離到單獨的文件中,並使用正確的語法顯式導入它。這樣的事情:

<link rel="components" href="calendar_component.html"> 

所以,我已經把你的應用程序分成4個文件。 calendarPicker.html,主HTML文件,如下所示:

<!DOCTYPE html> 

<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>CalendarDatePicker</title> 
    <link rel="stylesheet" href="calendarDatePicker.css"> 
    <link rel="components" href="calendar_component.html"> 
    </head> 
    <body> 
    <x-calendar></x-calendar> 

    <script type="application/dart" src="calendarDatePicker.dart"></script> 
    <script type="text/javascript" src="https://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/dart.js"></script> 
    </body> 
</html> 

calendarDatePicker.dart是相當小:

import 'dart:html'; 
import 'package:web_ui/web_ui.dart'; 

void main() {} 

組件代碼(calendar_component.dart)有這樣的代碼:

<!DOCTYPE html> 
<html> 
    <body> 
    <element name="x-calendar" constructor="CalendarComponent" extends="div"> 
     <template> 
     <table> 
      <tr> 
      <th>Sun</th> 
      <th>Mon</th> 
      <th>Tue</th> 
      <th>Wed</th> 
      <th>Thu</th> 
      <th>Fri</th> 
      <th>Sat</th> 
      </tr> 
     </table> 
     </template> 
     <script type="application/dart" src="calendar_component.dart"></script> 
    </element> 
    </body> 
</html> 

及所附dart文件(calendar_component.dart)具有組件類別:

import 'package:web_ui/web_ui.dart'; 

class CalendarComponent extends WebComponent {} 

希望這會有所幫助。我使用您提供的代碼構建了應用程序並重復了錯誤;然後,我用這裏顯示的代碼重建它。它運行沒有任何錯誤。

相關問題