简单的子字段与AngularDart绑定

时间:2014-12-10 09:16:15

标签: dart angular-dart

我正在尝试将组件的子字段绑定到输入字符串。这是代码的简化版本。

my_component.dart

class A {
    String text;
}

@ng.Component(
    selector: 'my-component'
)
class MyComponent {
    A a;
}

my_component.html

<div>
    {{a.text}}
    Name: <input type="text" ng-model="a.text">
</div>

这是我在输入框中输入任何内容后得到的错误。

错误

type '_LinkedHashMap' is not a subtype of type 'A' of 'value'.

可以绑定AngularDart中的子字段吗?如果是这样,这样做的正确方法是什么?

修改

现在可以添加像这样的构造函数

MyComponent(this.a);

但我仍在与这个更普遍的案件作斗争

@ng.Injectable()
class B {
    String text;
}

@ng.Injectable()
class A {
    B b;

    A (this.b);
}

@ng.Component(
    selector : "my-component",
    template: '{{a.b.text}} Name: <input type="text" ng-model="a.b.text">'
)
class MyComponent {
    A a;

    MyComponent(this.a);
}

现在的错误是

Missing getter: (o) => o.b
...
Exception: The null object does not have a method 'call'.
NoSuchMethodError: method not found: 'call'
Receiver: null
Arguments: [Instance of 'A']

修改2

我的模块配置是

class MyAppModule extends Module {
    MyAppModule() {
        bind (MyComponent);
        bind (A);
        bind (B);
    }
}

//Inside main()
applicationFactory()
    .addModule(new MyAppModule())
    .run();

pubspec.yaml

transformers:
- redstone_mapper
- angular:
    html_files:
    - lib/client/models/evento/evento.html ##Actually not using this in the example

编辑3

我在AngularDart上为任何感兴趣的人打开了this issue

编辑4

添加/更改它可以使其正常工作

@ng.Component
(
    selector : "my-component",
    template: '{{text}} Name: <input type="text" ng-model="text">'
)
class EventoComponent
{
    ...
    String get text => a.b.text;
    set text (String v) => a.b.text = v;
    .
}

但实际上已经杀死了结构,因为你必须自己压扁它。

0 个答案:

没有答案