【问题标题】:Properly using the data-bind visible property正确使用数据绑定可见属性
【发布时间】:2016-06-17 12:19:24
【问题描述】:

我有一个视图,可以根据类型显示不同类别的 foreach 循环中的数据。每个类别将包含许多用户 - 我创建了一个对象,该对象将检查一个类别中的用户数量是否超过 10,然后将显示可见绑定的文本。对于不超过 10 个的类别,它不会显示文本。

我的问题:如果第一个类别没有 10,它不会显示文本,这是否意味着它也不会显示剩余类别的文本?

帮助:可见绑定不起作用,即使一个类别包含超过 10 个并且不确定原因。

这是我的 JSFiddle:http://jsfiddle.net/xNdJk/1/

JavaScript:

var userViewModel = function (data) {
        var _self = this;
        _self.Name = ko.observable(data.Name);
        _self.Letter = ko.observable(data.Letter);
        _self.ShowLetter = ko.computed(function () {
            return (roleViewModel.UserCount > 13);
        });
    };

var typeViewModel = function (data) {
        var _self = this;
        _self.ContentType = ko.observable(data.ContentType);
        _self.Name = ko.observable(data.Name);
        _self.Rank = ko.observable(data.Rank);
        _self.UserCount = ko.observable(data.UserCount);
        _self.Users = ko.observableArray([]);
    };

查看:

<div class="collapse in" data-bind="template: { name: 'list', foreach: $data.Users }">

</div>
<div id="letter" data-bind="visible:ShowLetter, text: Letter"></div>

【问题讨论】:

    标签: javascript jquery knockout.js


    【解决方案1】:

    您正在混合类和实例,您创建了 secondModel 类但您从未实例化它,这是一个工作示例

    http://jsfiddle.net/xNdJk/2/

    var viewModel = function(){        
        this.Letter = ko.observable('Hello, World!');
        this.secondModel = new secondModel();
    
        this.shouldShowMessage = ko.computed(function() {
            return (this.secondModel.UserCount() > 13);
        }, this);
    }
    
    var secondModel = function(){
        var self = this;
        self.UserCount = ko.observable(153);
    }
    

    【讨论】:

    • 我已将我的代码修复为您所拥有的,但现在我收到此错误:Uncaught TypeError: Cannot read property 'ContentType' of undefined
    • 我们需要一个小提琴来解决这个问题
    猜你喜欢
    • 2015-10-13
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 2015-09-17
    • 2012-05-15
    • 1970-01-01
    • 2017-01-24
    • 2010-09-27
    相关资源
    最近更新 更多