2014-02-14 56 views
1

我是AngularDart(和Dart)的完整初學者;我跟着教程,但這是我似乎無法找到答案。如何在子屬性更改時觸發NgComponent的更新

我有一個很好地工作2個NgComponents:

<colorImage car-color="ctrl.car.color"></colorImage> 
<carImage car="ctrl.car"></carImage> 

我控制器「CTRL」有一個名爲「汽車」和「汽車」酒店有一個名爲「色」屬性。 當「car.color」更改時,colorButton NgComponent更新,但carImage NgComponent不更新。

當「car.color」更改時,如何觸發carImage的更新?

謝謝!

回答

1

您必須在CarImage中設置手錶爲car.color。 這看起來取決於您用於汽車的數據結構。

// constructor 
CarImage(Scope scope) { 
    scope.$watch(() => car.color, (color) => doSomething(color)); 
} 
+0

謝謝,這是我所期待的。 它似乎比直接綁定慢一點,但仍然正常工作! – user3309092

1

下面是工作示例沒有scopewatch特徵。我相信這是一個有角度的解決方案。

一下關於這個問題:https://stackoverflow.com/a/21958268/2777805

ang_testi.dart

import 'package:angular/angular.dart'; 

@NgComponent(
selector: 'colorImage', 
template: r'<p>colorImage: <input type="text" ng-model="cmp.carColor"></p>', 
publishAs: 'cmp' 
) 
class colorImage { 
    @NgTwoWay('car-color') 
    String carColor; 
} 

@NgComponent(
    selector: 'carImage', 
    template: r'<p>carImage: <input type="text" ng-model="cmp.car.color"></p>', 
    publishAs: 'cmp' 
) 
class carImage { 
    @NgTwoWay('car') 
    Map car; 
} 

@NgController(
    selector: '[main-test]', 
    publishAs: 'ctrl') 
class MainTestController { 
    Map car = {"color":"green", "image":"someImage"}; 
} 

class MyAppModule extends Module { 
    MyAppModule() { 
    type(MainTestController); 
    type(colorImage); 
    type(carImage); 
    } 
} 

void main() { 
    ngBootstrap(module: new MyAppModule()); 
} 

ang_testi.html

<!DOCTYPE html> 

<html ng-app> 
    <head> 
    <meta charset="utf-8"> 
    <title>ng-model test</title> 
    <link rel="stylesheet" href="ang_testi.css"> 
    </head> 
    <body main-test> 
    <colorImage car-color="ctrl.car.color"></colorImage> 
    <carImage car="ctrl.car"></carImage> 

    <p>controller: <input type="text" ng-model="ctrl.car.color"></p> 
    <p>color is {{ctrl.car.color}}</p> 

    <script src="packages/shadow_dom/shadow_dom.min.js"></script> 
    <script type="application/dart" src="ang_testi.dart"></script> 
    <script src="packages/browser/dart.js"></script> 
    </body> 
</html> 
+0

在控制器中,不需要類型「Map」,「String color」;足夠。調用carImage組件(例如)時,可以將整個控制器用作參考(這很有趣)。組件內部的變量需要定義爲「var car;」爲了獲得正確的類型。 – grohjy

相關問題