如果我有一个枚举,例如:
@Component(...)
class MyComponent {
MyEnum myEnum;
...
}
Run Code Online (Sandbox Code Playgroud)
如何在模板中使用此枚举?例如
<div *ngIf="myEnum == MyEnum.SOME_OPTION">
...
</div>
Run Code Online (Sandbox Code Playgroud)
编辑:我对如何使用枚举进行比较特别感兴趣。
“我正在转向使用新语言来创建跨平台应用程序(flutter),但我对创建 Web 应用程序或网站感到困惑,是否可以使用 Dart 和 flutter 进行制作。
我有一个模特:
class WordList {
List<Word> words = [];
}
Run Code Online (Sandbox Code Playgroud)
它是通过依赖注入我的一个视图创建的.
@NgController(
selector: '[list-ctrl]',
publishAs: 'ctrl'
)
class ListCtrl {
WordList wordList;
Scope scope;
ListCtrl(this.router, this.wordList, this.scope) {
scope.$watchCollection("", onChange );
}
Run Code Online (Sandbox Code Playgroud)
每当从该列表修改项目时,我都想运行一些逻辑.我该如何做到这一点?
我相信关键是在$ watchCollection中,但我无法弄清楚要作为监视表达式传递什么."ctrl.wordList.words"会告诉我何时添加/删除项目,但不会更改.
我有一个路由方案,#/articles导致articles.html视图,并#/articles/featured导致featured.html.不过,我不知道如何声明这个嵌套的写作.如果配置我的路线如下,两者#/articles并#/articles/featured导致articles.html(因为两者相符的路径R"^篇").
library my_router;
import 'package:angular/angular.dart';
class MyRouteInitializer implements RouteInitializer {
init(Router router, ViewFactory view) {
router.root
..addRoute(
name: 'articles',
path: '/articles',
enter: view('views/articles.html'),
mount: (Route route) => route
..addRoute(
name: 'featured',
path: '/featured',
enter: view('views/featured.html'))
);
}
}
Run Code Online (Sandbox Code Playgroud)
如果省略该enter: view('views/articles.html')行,则#/articles/featured路由正确路由到featured.html,但是没有路由到articles.html.
是否在某处记录了AngularDart指令的完整列表?据我所知,鉴于AngularDart的快速发展,此列表可能会发生变化.
我有两个控制器,并希望在它们之间"发送"对象.我有这样的事情:
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的解决方案只是将LogsController作为依赖项添加到UserController,并从模板中调用ctrl.logsCtrl.filterLogsFor(user)之类的东西.但它不会出于某种原因 - 我发现DI创建另一个新对象LogController与模板本身无关 - 我甚至尝试更改为"value(LogsController,new LogsController())",但它同样 - 它创建新的MysModule调用新的LogsController,然后新的另一个模板我想.我显然做错了什么 - 但文档没有帮助,而且angularjs似乎根本不相似.
更新:想象一下两个表(控制者) - 用户和日志,每个用户行都有链接显示分配给他的日志.
我制作了一个自定义组件,它基本上包含了一个d3折线图.现在我希望能够为图表中的行点击注册回调.
我给组件一个@NgCallback参数,然后我将事件发送到:
class NetworkSummaryComponent implements NgShadowRootAware {
@NgCallback('callback')
Function callback;
void onShadowRoot(ShadowRoot shadowRoot) {
...
chart.callMethod('listen', ['line-click', (ev) {
var name = ev.callMethod('getLineName');
print(name);
callback({'name': name});
}]);
}
}
Run Code Online (Sandbox Code Playgroud)
使用组件时,我将控制器的功能指定为回调:
<network-summary
...
callback="ctrl.lineClicked">
</network-summary>
Run Code Online (Sandbox Code Playgroud)
但是,该函数实际上从未被调用过,我知道回调是从JS端到达的,因为第一个片段中的print是被执行的.
如果我改为指定属性,因为callback="ctrl.lineClicked()"我得到一个奇怪的异常:
Closure call with mismatched arguments: function 'call'
我找不到任何关于如何正确回调的官方文档,所以我不确定我做错了什么..有什么想法吗?
在AngularDart中的所有弃用之后,现在通过我的模块构造函数中的下面的initRoutes方法配置路由.
//inside the main of the appliction
..
this.bind(RouteInitializerFn, toValue:initRoutes);
this.bind(NgRoutingUsePushState, toFactory:(_) => new NgRoutingUsePushState.value(false));
//in routeconfig.dart file which is imported in the main.dart
void initRoutes(Router router, RouteViewFactory viewFactory) {
viewFactory.configure({
'loginPage': ngRoute(
path: '/loginPage',
view: 'view/loginPage.html'),
'landingPage': ngRoute(
path: '/landingPage',
view: 'view/landingPage.html',
defaultRoute: true,
enter: _checkAuthentication
...
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在routeconfig.dart中注入具有_checkAuthentication方法的Service类?既然它不是一个类,怎么能在这里获得依赖注入?或者是否有另一种方法在Module contructor中初始化和注册RouteInitializerFn?
我有一个提供MySQL日期的Rails服务器。我的课程是基于AngularDart教程设置的。它似乎无法正确加载。
我的artist_service。飞镖方法:
Future<List<Record>> getArtistsRecords(int id) async {
String url = 'http://catbox.loc/artists/${id.toString()}/records'; // Rails: artists/:id/records
try {
HttpRequest response = await HttpRequest.request(
url, requestHeaders: headers);
List data = JSON.decode(response.responseText);
final records = data
.map((value) => new Record.fromJson(value))
.toList();
return records;
}
catch (e) {
throw _handleError(e);
}
}
Run Code Online (Sandbox Code Playgroud)
我的artist.dart工厂方法:
factory Record.fromJson(Map<String, dynamic> record) =>
new Record(_toInt(record['id']),
record['title'],
record['catalog'],
record['artist_id'],
record['label_id'],
record['style_id'],
record['alternate_catalog'],
record['recording_date'],
record['notes'],
record['penguin'],
record['category']
);
Run Code Online (Sandbox Code Playgroud)
令人反感的元素是recording_date,它声明为DateTime。当我在HTML中包括作为{{recording_date}}我得到1958-03-09的例子。如果我尝试,{{ recording_date | date}}它会以无效格式错误显示。我怀疑我没有 …
Ive遍历了Dart官方网站。他们对“开发”通道和“稳定”通道进行了深入研究,但是对于如何实际安装版本的SDK却一无所知。也没有关于当前的稳定版和开发版的信息。
显然,我错过了隐藏在简单网站中的东西。我想尝试一些官方的angulardart组件库,但是构建器需要Dart版本2-但我不知道如何获得它。
有人可以让我摆脱苦难,告诉我我是个白痴吗
谢谢