0

他のアプリから呼び出される単純なバックボーン アプリがあります。
「Welcome user」や「update succesfull」などのメッセージを表示するためのダイアログ ボックスのようです。
私はこのアプリを作成しました。最初に呼び出すと、すべての変数が設定されます: タイトルとメッセージですが、2 回目、3 回目に呼び出すと、値は更新されませんが、コンソールでは変数が変更されます! これは私のビューを単純化したもので、同じ値を渡します

var StatusMessageView = Backbone.View.extend({
    template : tmplStatusMessage,
    model : new StatusMessageModel(),
    initialize : function (data) {
        this.listenTo(this.model, "change", this.render);
        this.model.set(data);
    },
    render : function () {
        console.log("View - StatusMessage.render msg: " + this.model.get('message'));
        var template = Handlebars.compile(this.template);
        var html = template(this.model.toJSON());

        //-----------INTO THIS CONSOLE LOG I SEE HTML UPDATED!!! WHY???
        console.log('HTML: ' + html);

        if($("#status-message").length === 0) {
            $("body").append(html);
        }

            //AFTER A DELAY I CLOSE THE APP 
        var self = this;
        var intro_timer = setTimeout(function () {
            $("#status-message").addClass("enter");

            var outro_timer = setTimeout(function () {
                self.closeMessage();
            }, 5000);
        }, 500);
    }
});

別のビューに更新するには、例として次のコードを使用します。コンソールにトレースすると、メッセージは適切です。

statusMessageView.model.set({
    title : title,
    message : msg
});

なぜhtmlが更新され、変数はコンソールログで更新されますが、テンプレートには更新されないと思いますか?

4

2 に答える 2