当前位置:  开发笔记 > 编程语言 > 正文

Aurelia - 根据功能结果隐藏/显示Div

如何解决《Aurelia-根据功能结果隐藏/显示Div》经验,为你挑选了1个好方法。

使用Aurelia,我正在寻找与Angular 1类似的行为,我可以在其中使用函数ng-show.如:

这是我想要做的一个例子:

app.js

export class App {
    this.options = ['opt1', 'opt2', 'opt3', 'opt4, 'opt5'];
    this.current = "";
    isShown() {
        return (this.current === 'opt1');
    }
}

app.html



...

如果初始值为opt1,则显示div,但在选择更改时不显示/隐藏.我能让这个工作的唯一方法是这样做:

在这种情况下这也不错,但是我希望能做到这样的事情,我认为在JS中使用函数而不是在标记中可以更好地工作:

提前致谢!



1> 小智..:

一种方法是让你的函数成为一个吸气剂:

get isShown() {
    return (this.current === 'opt1');
}

和:

Show/Hide

但是这样它会被脏检查,以避免你可以使用computedFrom:

import { computedFrom } from 'aurelia-framework';

export class App {

    constructor() {
        this.options = ['opt1', 'opt2', 'opt3', 'opt4', 'opt5'];
        this.current = '';
    }

    @computedFrom('current')
    get isShown() {
        return (this.current === 'opt1');
    }

}

你也可以使用@observable:

import { observable } from 'aurelia-framework';

export class App {

    isShown = false;
    @observable current = '';

    currentChanged(newValue, oldValue) {
        this.isShown = (newValue === 'opt1');
    }

}

你也可以使用BindingEngine:

import { BindingEngine, inject } from 'aurelia-framework';

@inject(BindingEngine)
export class App {

    isShown = false;
    current = '';
    options = ['opt1', 'opt2', 'opt3', 'opt4', 'opt5'];

    constructor(bindingEngine) {
        this.bindingEngine = bindingEngine;

        this.bindingEngine
            .propertyObserver(this, 'current')
            .subscribe(this.currentChanged.bind(this));
    }

    currentChanged(newValue, oldValue) {
        this.isShown = (newValue === 'opt1');
    }
}

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有