0

通知システムで使用する Knockout js コンポーネントを作成しています。コンポーネントをページに追加すると、params is undefined メッセージが表示されます。params オブジェクトがビューモデルのコンストラクターに送信されていないようです。

最初はコンポーネントローダーが問題だと思ったので、次のようにコンポーネントを手動で登録しました:

ko.components.register('notification-info', {
    viewModel: { require: "/notifications/info" },
    template: { require: "text!/notifications/info.tmpl.html"}
});

コンポーネントは、info.js と呼ばれる js ファイルで構成されます

define(['knockout'], function (ko) {

function InfoNotificationViewModel(params) {
    this.type = params.type;
    this.subject = params.subject;
    this.title = params.title;
    this.content = params.content;
}

return InfoNotificationViewModel();
});

および info.tmpl.html という html テンプレート

<div class="notification-container" data-bind="css: type">
<div class="notification-icon"><span class="glyphicon"></span></div>
<div class="notification-content">
    <div class="notification-subject" data-bind="text: subject">
    </div>
    <div class="notification-message">
        <p data-bind="text: title"></p>
        <p data-bind="text: content"></p>
    </div>
</div>

コンポーネント バインディングを使用して、ページにコンポーネントを追加します。

<div data-bind="component: {name: 'notification-info', params: {type: 'info', subject: '',title: '', content: ''} }"></div>

後で、これは websocket 経由で送信されるデータで満たされるため、params は観察可能になります。

ここで何が間違っているのか教えてください。コンポーネントの登録方法に関係があると思います。

4

1 に答える 1