knockout.js 在组件模板中传递值- knockout JS

laawzig2  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(217)

我有一个处理所有错误/错误消息的组件。我调试了它,并成功地将错误字符串传递到变量中,但无法在模板中显示
这是我的代码

export class ErrorHandlerComponent {

get ComponentName() {
    return "error-handler";
}

constructor() {
    this.errorMessage = ko.observable();
    if (!ko.components.isRegistered(this.ComponentName)) {
        ko.components.register(this.ComponentName, {
            viewModel: ErrorHandlerComponent,
            template:
            `
                <div class="modal fade" id="modalError" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true" data-backdrop='static' data-keyboard='false'>
                    <div class="modal-dialog" role="document">
                        <div class="modal-content">
                            <div class="modal-header">
                                <h5 class="modal-title" id="exampleModalLabel"><i class="fa fa-exclamation-circle"></i>&nbsp;Error occurred</h5>
                                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                </button>
                            </div>
                            <div class="modal-body" data-bind="text: errorMessage">
                            </div>
                            <div class="modal-footer modal-btn">
                                <button type="button" class="btn btn-warning btn-lg" data-bind="click: ClickRefreshPage">Refresh</button>
                            </div>
                        </div>
                    </div>
                </div>
            `
        });
    }
}

Show(msg) {
    this.errorMessage(msg);
    $('#modalError').modal('show');
}

Close() {
    $('#modalError').modal('hide');
    $(".modal-backdrop").remove();
    $("body").css({ 'padding-right': '0px' });
}

ClickRefreshPage() {
    alert('refreshing...');
}

}
当我调用Show函数时,参数被传递,this.errorMessage()有一个值,但是在text: errorMessage中我不能显示它。

7bsow1i6

7bsow1i61#

john是对的,this指的是组件注册时的ErrorHandlerComponent,显然总是空的。
我缺少的是一个可观察的参数,它是通过组件的param属性从父组件传递过来的。如果你把它放在你的构造函数中,ko会链接所有的东西,并且会显示一个验证消息传递给组件。
https://jsfiddle.net/ezw9q02x/1/

相关问题