gpt4 book ai didi

Aurelia 导航栏 VM 不工作

转载 作者:行者123 更新时间:2023-12-01 09:53:01 25 4
gpt4 key购买 nike

我按照 Aurelia 教程中的示例设置了 nav-bar.html 和 nav-bar.js。后来,我想向 nav-bar.js VM 添加一些功能,但发现它的属性或方法都没有被调用。

我正在尝试在我的顶部导航中使用 Aurelia Auth 过滤,但即使在省略 auth 功能时,也不会调用 top-nav-bar.js 中的任何内容。

代码如下:

顶部导航栏.js

import {bindable} from 'aurelia-framework';
import {inject} from 'aurelia-framework';
import {AuthService} from 'aurelia-auth';
//import {AuthFilterValueConverter} from './authFilter';
//import {Router} from 'aurelia-router';
@inject(AuthService )
export class TopNavBar {
_isAuthenticated=false;
@bindable router = null;

constructor(auth){
console.log('called nav bar constructor'); //NEVER CALLED
this.auth = auth;

}
//@computedFrom(this.auth)
get isAuthenticated(){
return this.auth.isAuthenticated(); //NEVER CALLED
}
}

top-nav-bar.html

    <template>
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
<!-- <require from="paulvanbladel/aurelia-auth"></require> -->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle Navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">
<i class="fa fa-home"></i>
<span>${router.title}</span>
</a>
</div>

<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li repeat.for="row of router.navigation | authFilter: isAuthenticated" class="${row.isActive ? 'active' : ''}">
<a data-toggle="collapse" data-target="#bs-example-navbar-collapse-1.in" href.bind="row.href">${row.title}</a>
</li>
</ul>

<ul if.bind="!isAuthenticated" class="nav navbar-nav navbar-right">
<li><a href="/#/login">Login</a></li>
</ul>
<ul if.bind="isAuthenticated" class="nav navbar-nav navbar-right">
<li><a href="/#/profile">Profile</a></li>
<li><a href="/#/logout">Logout</a></li>
</ul>

<ul class="nav navbar-nav navbar-right">
<li class="loader" if.bind="router.isNavigating">
<i class="fa fa-spinner fa-spin fa-2x"></i>
</li>
</ul>
</div>
</nav>
</template>

应用.html

<template>
<require from="./top-nav-bar.html"></require>
<require from="bootstrap/css/bootstrap.css"></require>

<top-nav-bar router.bind="router"></top-nav-bar>

<div class="page-host">
<router-view></router-view>
</div>
</template>

最佳答案

如果你有带有 js 和 html 的 aurelia VM,你需要将它导入到 View 中(没有 *.html):

 <require from="./top-nav-bar"></require>

有时您没有用于 View 的 VM,在这种情况下您只导入 html,就像您所做的那样:

 <require from="./top-nav-bar.html"></require>

关于Aurelia 导航栏 VM 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34148851/

25 4 0