2014-10-17 27 views
2

我想在AngularDart 1.0創建組件:在DartAngular 1.0飛鏢非常簡單的事情1.7

的index.html:

<!DOCTYPE html> 

<html ng-app> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title>data_generator_front</title> 
    </head> 

    <body> 

    <my-form></my-form> 

    <label>Name: </label> 
    <input type="text" ng-model="myProperty" placeholder="Enter your name here"> 
    <hr> 
    <h1 ng-cloak>Hello {{myProperty}}</h1> 
    <input type="submit" ng-click="method1()">  

    <script type="application/dart" src="index.dart"></script> 
    <script src="packages/browser/dart.js"></script> 

    </body> 
</html> 

index.dart:

import "package:angular/angular.dart"; 
import "package:angular/application_factory.dart"; 
import "my_form.dart"; 

@Injectable() 
class RootContext{ 
    String myProperty = "jeahhhhhhhh"; 

    void method1(){ 
     print("method1"); 
    } 

} 

main(){ 
    applicationFactory() 
    .rootContextType(RootContext) 
    .addModule(new DateFormModule()) 
    .run(); 
} 

my_form.html

<form> 
    <label>Years:</label> 
    <input type="text" placeholder="begin"> 
    <input type="text" placeholder="end"> 
    <input type="checkbox"> 
    <input type="submit"> 
</form> 

my_form.dart

import "package:angular/angular.dart"; 

@Component(
     selector: "my-form", 
     templateUrl: "my_form.html") 
class DateFormComponent {} 

class DateFormModule extends Module { 
    DateFormModule(){ 
     bind(DateFormComponent); 
    } 
} 

請糾正我在說什麼。

我有一個類「RootContext」,它包含屬性「myProperty」和方法「method1」。這個類由@Injectable()註釋,這使得類可以由angulardart處理。像{{}},ng-model,ng-click ....中的所有屬性/方法都可用。last,rootContextType(RootContext)使RootContext成爲應用程序的rootcontext。那是對的嗎 ?


現在我想創建一個組件。 (my_form.dart和my_form.html)我成功顯示了我的組件的html,這非常棒。

我會預先用的值等填充輸入(具有佔位符= 「開頭」) 「1980年」 這裏是我的嘗試:

my_form.dart:

import "package:angular/angular.dart"; 

@Component(
     selector: "my-form", 
     templateUrl: "my_form.html") 
class DateFormComponent { 
    String years_begin = "1980"; 
} 

class DateFormModule extends Module { 
    DateFormModule(){ 
     bind(DateFormComponent); 
    } 
} 

my_form html的

<form> 
    <label>Years:</label> 
    <input type="text" placeholder="begin" ng-model="years_begin"> 
    <input type="text" placeholder="end"> 
    <input type="checkbox"> 
    <input type="submit"> 
</form> 

那一聲有: ... 失蹤的getter:(0)= o.years_begin> 10 ...

好的,讓我們創建一個getter然後:String get years_begin => _years_begin; 但仍然有相同的錯誤... 所以@Component()不像@Injectable()它並沒有打開視圖處理的所有字段/方法。所以如何打開它們?它看起來像@NgAttr(attrName), @NgOneWay(attrName),@NgTwoWay(attrName)做工作

讓我們試試這個

class DateFormComponent { 
    @NgAttr("years_begin") 
    String years_begin = "1980"; 
} 

- >沒有更多的例外,但現場未填寫

class DateFormComponent { 
    @NgOneWay("years_begin") 
    String years_begin = "1980"; 
} 

- >做這份工作!

class DateFormComponent { 
    @NgTwoWay("years_begin") 
    String years_begin = "1980"; 
} 

- >以及

被NgOneWay同步模型,以查看? 是NgTwoWay同步模型來查看和查看模型? ngAttr看起來更像是在HTML中傳遞的屬性,就像init時間一樣?

讓我們切換到方法現在這裏是我的變化

my_form.html

<form> 
    <label>Years:</label> 
    <input type="text" placeholder="begin" ng-model="years_begin"> 
    <input type="text" placeholder="end"> 
    <input type="checkbox"> 
    <input type="submit" ng-click="method2()"> 
</form> 

my_form.dart

import "package:angular/angular.dart"; 

@Component(
     selector: "my-form", 
     templateUrl: "my_form.html") 
class DateFormComponent { 
    @NgTwoWay("years_begin") 
    String years_begin = "1980"; 

    method2(){ 
     print("method2"); 
    } 

} 

class DateFormModule extends Module { 
    DateFormModule(){ 
     bind(DateFormComponent); 
    } 
} 

它與崩潰:沒有消氣的 '方法2'。 對於方法,NgOneWay ngTwoway等價於什麼?

不要猶豫,給我最多約angulardart &鏢DATE鏈接和信息,不會有大量的文檔資料是最新的甚至angulardart網站...

+1

Angular.dart 1.0剛剛發佈,教程和文檔尚未更新。這裏是angular.dart.tutorial的一個pull請求,包含Angular.dart 1.0的更新https://github.com/angular/angular.dart.tutorial/pull/131 – 2014-10-17 14:55:38

+0

太棒了!非常感謝 ! – BenNG 2014-10-17 15:12:47

回答

1

我有一個類「RootContext 「擁有屬性'myProperty'和一個方法」method1「。這個類由@Injectable()註釋,這使得類可以由angulardart處理。像{{}},ng-model,ng-click ....中的所有屬性/方法都可用。last,rootContextType(RootContext)使RootContext成爲應用程序的rootcontext。那是對的嗎 ?

@Injectable()無關很大程度上與角結合({{}}),它僅用於在角所使用的依賴注入系統和生成代碼的變壓器,以避免鏡/反射在生產代碼(其具有性能和代碼臃腫問題) 您還需要添加變壓器配置才能使此項工作 參見https://github.com/vicb/angular.dart.tutorial/blob/1013-v1/Chapter_06/pubspec.yaml#L12爲例。 (Angular.dart變形金剛也需要應用於開發,不僅適用於開發)

2

感謝an answer here我找到了一個關於'get2 getter'for'method2'問題的答案。

變壓器掙扎,所以我們需要通過額外的信息:在我的組件我設置exportExpressions屬性是這樣的:

my_form.dart

import "package:angular/angular.dart"; 

@Component(
     selector: "my-form", 
     templateUrl: "my_form.html", 
     exportExpressions: const ["method2"]) 
class DateFormComponent { 
    @NgTwoWay("years_begin") 
    String years_begin = "1980"; 

    method2(){ 
     print("method2"); 
    } 
} 

class DateFormModule extends Module { 
    DateFormModule(){ 
     bind(DateFormComponent); 
    } 
} 

我認爲這是關係到樹搖晃這種方式的變壓器確切'method2'