【发布时间】:2017-03-24 01:20:41
【问题描述】:
我以为我会很快实现这一点,但它让我陷入了困境。
我有一个自定义元素的侧边栏。它有 2 种“模式”,一种用于“管理”页面,一种用于常规页面。我的 sidebar.js 中有一个存储模式的属性。在 sidebar.html 中,我使用 show.bind="mode!=='admin'" 来显示 UI 的管理部分。当我在构造函数中更改 mode 属性的值时,它按预期工作。
我似乎无法用代码更改视图。
侧边栏是我app.html的一部分:
<template>
<require from="./elements/sidebar"></require>
<div id="wrapper">
<sidebar mode="regular"></sidebar>
<main>
<router-view></router-view>
</main>
</div>
现在我有另一个视图想要更改侧边栏的模式。在该视图的 js 中,我更改了 activate 方法中 mode 属性的值(我通过构造函数中的注入引用了侧边栏):
activate(params, routeConfig){
this.sidebar.mode = "admin";
...
}
但似乎没有任何更新。这是我的 sidebar.js:
import {bindable} from "aurelia-framework";
import config from 'config';
export class Sidebar {
@bindable mode;
constructor(){
...
this.mode = "regular"; //default value is regular
...
}
}
模式的值改变了,但我的侧边栏视图(html)没有更新。
总的来说,我对 Aurelia 和 Web 开发还是个新手。
Aurelia 最好的方法是什么?
【问题讨论】:
-
你能建立一个 plunker 的例子吗?
-
我以前从未设置过类似的东西。但这里是我上面讨论过的改编文件:plnkr.co/edit/83MuwCO22Md0dYnVl3fQ?p=catalogue我不知道如何为一个完全正常工作的 Aurelia 应用程序设置它。
-
你可以 fork 这个 Hello World 应用程序 - plnkr.co/edit/5vMoxM?p=preview。查看问题的工作示例将帮助我们为您解决问题。
-
尝试使用布尔值。不要测试
show.bind="mode!=='admin'",而是使用show.bind="isAdmin"和show.bind="!isAdmin"。
标签: javascript aurelia