2016-08-15 5 views
2

Ich bin neu bei mir Programmierung so Dart bitte entblössen :)js.dart mit auth0 API belichten

Ich bin eine DArt Angular2 Anwendung zu schreiben, aber es ist das Problem bei der Hand irrelevant.

Ich versuche, Auth0Lock mit Dart zu verwenden, indem ich seine API mit 1https: //pub.dartlang.org/packages/js offen legen.

Ich verwende Dartium, um die Anwendung zu debuggen.

so aussetzt ich die Auth0Lock API die folgende auth0lock.dart Datei:

import 'package:js/js.dart'; 

@JS() 
class Auth0Lock { 
external factory Auth0Lock(String token, String domain, Object options); 
    external on(String event, Function func); 
    external show(); 
} 

ich ausgesetzt nur die grundlegenden Dinge die ich brauche.

dann habe ich einen Angular2 Dienst in einer Datei auth0_service.dart benannt, die den folgenden Code hat:

Import '-Paket: angular2/core.dart'; Import 'auth0lock.dart'; Import 'app.config.dart';

@Injectable() 
class Auth { 
Auth0Lock lock; 

Auth() { 
    this.lock = new Auth0Lock(configObj.auth0.apiKey, configObj.auth0.domain,{}); 
} 
updateProfileName(data) { 
    var profile = data['profile'] != null ? data['profile'] : data; 
    print(profile['name']); 
} 

authenticated() { 
    return false; 
} 

login() { 
    this.lock.show().then(this.updateProfileName); 
} 


} 

Ich werde auch mein zeigen index.html wo ich auth0 laden:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Demo App</title> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 
    <link rel="stylesheet" href="www/styles.css"> 
    <script src="https://cdn.auth0.com/js/lock/10.0.0/lock.min.js"></script> 
    <script defer src="/web/main.dart" type="application/dart"></script> 
    <script defer src="/packages/browser/dart.js"></script> 
</head> 
<body> 
    <my-app></my-app> 
</body> 
</html> 

, wenn ich meine Anwendung ausführen bekomme ich die ach Fehler:

EXCEPTION: No static method 'Auth0Lock.' declared in class 'Auth0Lock'. 

so Auth0Lock ist keine statische Methode, es ist ein Konstruktor für die Klasse. also muss ich irgendwie die JS api falsch gebrauchen.

irgendwelche Ideen?

Antwort

1

ich brauche, um die auth0lock.dart Folgendes vorangestellt wird:

@JS() 
library test; 

eigentlich ich test zu etwas umbenennen kann ich will ... iI müssen nur mit einem Namen, die js-Tag und Bibliothek hinzufügen. das hat es gelöst.