2014-10-18 83 views
1

我已經創建了一個角度飛鏢組件「範圍」,可以在窗體中使用。 該表單還是一個組件是@NgTwoWay(「param」)中的參數是否真的做了些什麼?

在我的代碼中,我通過窗體中的組件綁定了值返回,但是在重命名之後它好像給@NgTwoWay(param)參數,在我的情況下@NgTwoWay(「 v1「)沒有做任何事情,但它仍然是強制性的。

這裏是我的代碼:

my_form.dart

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

@Component(selector: "my-form", templateUrl: "my_form.html", exportExpressions: const ["submit"]) 
class DateFormComponent { 

    @NgOneWay("random") 
    bool random; 

    @NgTwoWay("v1") 
    String years = "eee"; 

    submit() { 
     print(random); 
     print(years); 
    } 

} 

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

my_form.html

<form> 
    <range name="years" value="years"></range> 
    <div> 
     <label>Random:</label> <input type="checkbox" ng-model="random"> 
    </div> 
    <div> 
     <input type="submit" value="Go !" ng-click="submit()"> 
    </div> 
</form> 

range.dart

import "package:angular/angular.dart"; 

@Component(selector: "range", templateUrl: "range.html") 
class RangeComponent { 
    @NgAttr("name") 
    String name; 

    @NgTwoWay("value") 
    String value; 

    @NgOneWay("range_begin") 
    String range_begin; 

    @NgOneWay("range_end") 
    String range_end; 

    List<String> ranges = []; 

    addRange() { 
     ranges.add("$range_begin-$range_end"); 
     range_begin = ""; 
     range_end = ""; 
     value = ranges.reduce((begin, item) { 
     return begin += ",$item"; 
     }); 
    } 

    info() { 
     print(range_begin); 
     print(range_end); 
     print(ranges); 
     print(value); 
    } 

} 

class RangeComponentModule extends Module { 
    RangeComponentModule() { 
     bind(RangeComponent); 
    } 
} 

range.html

<div> 
    <label>{{name}}:</label> <input type="text" placeholder="begin" 
     size="8" ng-model="range_begin"> <input type="text" 
     placeholder="end" size="8" ng-model="range_end"> <input 
     type="submit" value="add" ng-click="addRange()"> <input 
     type="submit" value="info" ng-click="info()"> 
</div> 

我認爲參數必須綁定一個DOM屬性與一個實例的屬性?

回答

0

您需要這些屬性才能將自定義元素(組件)的HTML屬性綁定到組件類的字段。

<body ng-app> 
    <my-component someattrib="somevalue"></my-component> 

當你MyComponent類有一個字段

@NgAttr('someattrib') 
String someField; 

那麼 'someField' 將與 'someValue中' 初始化。

對於每個綁定,您只需綁定屬性就不需要這樣的屬性。

+0

我明白現在,但事情是在我的代碼中沒有「v1」DOM屬性了,它仍然工作! – BenNG 2014-10-19 12:21:39

+0

我不明白你的意思是「它還在工作」。當沒有'v1' DOM屬性時,'years'字段不可能從分配給它的'v1' DOM屬性獲得值,可以嗎? – 2014-10-19 12:25:54

+0

我想說的是:我可以用@NgTwoWay替換@NgTwoWay(「v1」)(「whatEverTheValue」)並且它仍在工作 – BenNG 2014-10-19 16:03:51

相關問題