javascript - 如何通知模型中的 View 以更改主干中的值

标签 javascript jquery html css backbone.js

我有一个模型,例如:

var resultEntityModel = Backbone.RelationalModel.extend({
        defaults : {
            name : "",
            bgOccurence : "",
            fgOccurence : "",
            bgOccurenceCount : "",
            fgOccurenceCount : "",
        },
        initialize : function() {

            var bgOccurence = this.set("bgOccurence", bgOccurence);      
            var fgOccurence = this.set("fgOccurence", fgOccurence);
            if((Math.abs((bgOccurence-fgOccurence))) >= 10){        
                // send information to view that background should be red
            }else{
                // send information to view that background should be white
            }
        },
});

还有一个 View :

var resultEntityView = Marionette.CompositeView.extend({
        tagName : "tr",
        template : ResultEntityPanel,
        initialize: function () {
               this.model.on(...) // it should take information from model 
                                  //and change css values according to this information
        },

    });

我如何从模型中获取信息并将其发送到 View 以更改 .css 文件中的某些值?我知道方法,但我不知道怎么做。

最佳答案

您希望 View 监听模型的变化。参见 Backbone listenTo .

未经测试的代码,但应该这样做:

型号:

    var resultEntityModel = Backbone.RelationalModel.extend({
        defaults : {
            name : "",
            bgOccurence : "",
            fgOccurence : "",
            bgOccurenceCount : "",
            fgOccurenceCount : "",
        },
        initialize : function() {
            this.set("bgOccurence", bgOccurence);      
            this.set("fgOccurence", fgOccurence);
        }
    });

查看:

    var resultEntityView = Marionette.CompositeView.extend({
        tagName : "tr",
        template : ResultEntityPanel,
        initialize: function () {
            this.listenTo(this.model, "change:bgOccurence", this.setBg);
            this.listenTo(this.model, "change:fgOccurence", this.setBg);
        },
        setBg: function(model, value) {
            var bgOccurence = model.get('bgOccurence'),
                fgOccurence = model.get('fgOccurence');
            if ((Math.abs((bgOccurence-fgOccurence))) >= 10) {
                $('body').css({'background-color':'red'})
            } else {
                $('body').css({'background-color':'white'})
            }
        }
    });

关于javascript - 如何通知模型中的 View 以更改主干中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17740179/

相关文章:

javascript - 第一个子样式仅适用于第一个元素

javascript - 当鼠标悬停在另一张图片上时,如何让图片滑过另一张图片?

javascript - 通过下拉菜单设置 SVG 元素的样式

Javascript清除mousemove超时

javascript - 动态表单验证并禁用提交按钮

javascript - fullPage.js 没有缓动

html - CSS3 : Box shadow just like in the image

JavaScript string.replace 使用 "$$"输出 "$"

javascript - 仅使用 parsley.js 验证提交时的表单

javascript - 使用 JQuery 创建 CSS 样式