我有两个 Controller ,想在它们之间“发送”对象。我有这样的事情:

@NgController(selector: '[users]', publishAs: 'ctrl')
class UsersController {
  List<Users> users;
}

@NgController(selector: '[user_logs]', publishAs: 'ctrl')
class LogsController {
  List<Log> logs;
  void filterLogsFor(User user) { logs = ... }
}

class MyAppModule extends Module {
  MyAppModule() {
    type(LogsController);
    type(UserController);
  }
}

我的解决方案只是将 LogsController 作为依赖项添加到 UserController 并从模板调用类似 ctrl.logsCtrl.filterLogsFor(user) 的东西。但由于某种原因它不起作用 - 我发现 DI 创建了另一个与模板本身无关的新对象 LogController - 我什至尝试更改为“value(LogsController,new LogsController())”,但它相同 - 它创建新的 LogsController 当新的 MyAppModule 被调用,然后我猜是新的另一个模板。我显然做错了 - 但文档没有帮助,angularjs 似乎根本不相似。

更新:
想象一下两个表( Controller ) - 用户和日志,每个用户行都有链接来显示分配给他的日志。

最佳答案

使用最新的AngularDart库(0.10.0),GünterZöchbauer的解决方案仍然正确,但是语法有所变化:

// Receiver
//import 'dart:async';
String name;
Scope scope;
ReceiverConstructor(this.scope) {
  Stream mystream = scope.on('username-change');
  mystream.listen(myCallback);
}

void myCallback(ScopeEvent e) {
  this.name = e.data;
}


// Sender
scope.emit("username-change", "emit");
scope.broadcast("username-change", "broadcast");
scope.parentScope.broadcast("username-change", "parent-broadcast");
scope.rootScope.broadcast("username-change", "root-broadcast");

关于dart - 如何在 Angular DART Controller 之间进行通信,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22151427/

10-09 10:01