Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 未调用装饰器(作用域)/监视函数_Dart_Angular Dart_Angular Decorator - Fatal编程技术网

Dart 未调用装饰器(作用域)/监视函数

Dart 未调用装饰器(作用域)/监视函数,dart,angular-dart,angular-decorator,Dart,Angular Dart,Angular Decorator,这是我的装饰师: @Decorator(选择器:“[navbaractivator]”) 类导航激活器{ 最终记录器=新记录器('webapp_base_ui.sample.flexbox.navbaractivator'); 最终范围(u范围);; 最终路由器(u路由器),; 导航激活器(此。\范围,此。\路由器){ _logger.info(“导航激活器”); _scope.watch(_router.activePath,(value,previousValue){ _logger.inf

这是我的装饰师:

@Decorator(选择器:“[navbaractivator]”)
类导航激活器{
最终记录器=新记录器('webapp_base_ui.sample.flexbox.navbaractivator');
最终范围(u范围);;
最终路由器(u路由器),;
导航激活器(此。\范围,此。\路由器){
_logger.info(“导航激活器”);
_scope.watch(_router.activePath,(value,previousValue){
_logger.info(“变更”);
},收集:正确);
}
}
下面是相应的HTML代码段:

导航
“更改”消息仅在重新加载页面后出现,而不是在更改视图后出现。。。 请。帮助-thx

[更新]


我正在使用路由器。onRouteStart。听好了。更多详细信息请参见下面的回答

我现在有了一个很好的解决方案: 工作示例(编译为JS):

HTML:

我的装饰师:

@Decorator(选择器:“[navbaractivator]”)
类导航激活器{
最终记录器=新记录器('webapp_base_ui.sample.flexbox.navbaractivator');
静态常量字符串_classToChange=“active”;
静态常量字符串_dataAttribute=“数据路由”;
最终路由器(u路由器),;
最终的html.Element\u元素;
字符串routeToCheck;
导航激活器(此._元素,此._路由器){
_logger.fine(“导航激活器”);
_routeToCheck=\u元素.getAttribute(\u数据属性);
_logger.fine(“路由名称:to check:${u routeToCheck}”);
_addListener(compareAttribute:(_routeToCheck!=null&&u routeToCheck.isNotEmpty));
}
//--------------------------------------------------------------------------------
//私人的
字符串_route(){
最终列表名称=新列表();
_router.activePath.forEach((最终路由元素){
name.add(element.name);
});
返回名称。join(“/”);
}
void_addListener({final bool compareAttribute}){
_router.onRouteStart.listen((最终RouteStartEvent事件){
事件。完成。然后((最终bool成功){
如果(成功){
最终字符串路由=_route();
函数检查=()=>_compareRoutePath();
如果(!compareAttribute){
check=()=>\u比较标记(event.uri);
}
if(check()){
_元素.classes.add(_classToChange);
}否则{
_element.classes.remove(_classToChange);
}
}
});
});
}
bool(u compareRoutePath){
最终字符串路由=_route();
_fine(“已更改,要检查的路由名称:${u routeToCheck},路由名称:$Route”);
返回(_routeToCheck==路由);
}
bool\u比较标记(最终字符串uri){
_fine(“已更改,Uri:${Uri}”);
最终的html.anchoreElement锚点=(_element.querySelector(“a”)作为html.anchoreElement);
if(anchor!=null&&anchor.href!=null&&anchor.href.indexOf(“#”)1){
试一试{
最后一个字符串片段=anchor.href.substring(anchor.href.indexOf(“#”)+1);
_fine(“->Fragment:${Fragment},路由名称:${u Route()},Uri:$Uri”);
if(片段==uri){
返回true;
}
}
论测距误差
捕获(e){
_fine(“在${anchor.href}中没有片段”);
}
}
返回false;
}
}
这是路由器:

void myRouteInitializer(路由器路由器,RouteViewFactory视图){
根路由器
…addRoute(
名称:“第一”,
路径:“/first”,
//输入:view(“views/first.html”),
defaultRoute:对,
装载:(路线)=>路线
…addRoute(
defaultRoute:对,
姓名:'第一',
路径:'/all',
输入:view('views/first.html'))
…addRoute(
名称:'firstsub',
路径:'/sub',
输入:view('views/firstsub.html'))
)
…addRoute(
姓名:“第二”,
路径:“/秒”,
输入:视图(“views/second.html”)
)
…addRoute(
名称:“第三”,
路径:“/third”,
输入:视图(“views/third.html”)
);
}