2015-12-08 18 views
3

我也跟着設立一個導航,一個bar.html並在奧裏利亞教程NAV-bar.js的例子。後來,我想了一些功能添加到NAV-bar.js VM,但發現它的非的屬性或方法是不斷調用。奧裏利亞導航欄VM不工作

我試圖使用奧裏利亞驗證篩選我的頂部導航,但即使省略AUTH功能時,沒有在頂級導航-bar.js是不斷調用。下面

代碼:

頂級NAV-bar.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 
    } 
} 

頂級導航 - 一個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> 

app.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> 

回答

7

如果你有奧裏利亞VM與JS和HTML,你需要將其導入到t他查看像(不含*。html的):

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

有時候你沒有VM的觀點,在這種情況下,你只導入的HTML,像你這樣的:

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

現在,這是一個微妙區別。我花了數小時試圖弄清楚我錯了什麼地方。非常感謝你的回答。 –

+0

同樣在這裏,這將是很好更新文檔進行這種區分更清晰 – dan