Jquery ui 未捕获类型错误:属性';最小值';对象#<;对象>;这不是一个函数

Jquery ui 未捕获类型错误:属性';最小值';对象#<;对象>;这不是一个函数,jquery-ui,knockout.js,slider,Jquery Ui,Knockout.js,Slider,我试图利用RP Niemeyer几次发布的击倒滑块活页夹。不幸的是,在尝试使用它时,我收到了标题中的错误 (function($){ ko.bindingHandlers.slider = { init: function (element, valueAccessor, allBindingsAccessor) { var options = allBindingsAccessor().sliderOptions || {}; var sliderVa

我试图利用RP Niemeyer几次发布的击倒滑块活页夹。不幸的是,在尝试使用它时,我收到了标题中的错误

(function($){

ko.bindingHandlers.slider = {
    init: function (element, valueAccessor, allBindingsAccessor) {
        var options = allBindingsAccessor().sliderOptions || {};
        var sliderValues = ko.utils.unwrapObservable(valueAccessor());

        if(sliderValues.min !== undefined) {
            options.range = true;
        }

        options.slide = function(e, ui) {
            if(sliderValues.min) {
                // Errors here
                sliderValues.min(ui.values[0]);
                sliderValues.max(ui.values[1]);
            } else {
                sliderValues.value(ui.value);
            }
        };

        ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
            $(element).slider("destroy");
        });

        $(element).slider(options);
    },
    update: function (element, valueAccessor) {
        var sliderValues = ko.toJS(valueAccessor());
        if(sliderValues.min !== undefined) {
            $(element).slider("values", [sliderValues.min, sliderValues.max]);
        } else {
            $(element).slider("value", sliderValues.value);
        }
    }
};

this.range = {
    'cook': function(kitchen, name, label, recipe){

        var food = new this.viewModel(kitchen);
        food.name = name;
        food.label = label;
        food.total(recipe.numberOfResults);
        food.criteriaMin = recipe.minValue;
        food.criteriaMax = recipe.maxValue;

        return food;
    },
    'viewModel': function(kitchen){
        var self = this;

        this.name = '';
        this.label = '';

        this.total = window.ko.observable();

        this.criteriaMin = ko.observable(0);
        this.criteriaMax = ko.observable(100);

        this.loading = window.ko.observable(false);
        this.template = '';

        this.getSelection = function(){
            return null;
        };

        this.setSelection = function(){

        };
    },
    'template': '<th class="idc-td-criteria" scope="row" data-bind="text:label"></th>' +
        '<td class="idc-td-value idc-td-slider">' +
        '   <label for="AmountMin"  class="hiddenText">Amount Min</label>' +
        '   <input type="text" data-default="0" data-maxdecimal="2" class="idc-textinput idc-sliderinput" maxlength="6" data-bind="value: criteriaMin || \'0.00\'">' +
        '   <span class="slider" data-bind="slider: { min: criteriaMin, max: criteriaMax }, sliderOptions: {min: 0, max: 100, step: 1}"></span>' +
        '   <label for="AmountMax"  class="hiddenText">Amount Max</label>' +
        '   <input type="text" data-default="10" data-maxdecimal="2" class="idc-textinput idc-sliderinput" maxlength="6" data-bind="value: criteriaMax || \'10.00\'">' +
        '</td>' +
        '<td class="idc-td-results" data-bind="text:total"></td>' +
        '<td class="idc-td-remove">' +
        '   <a href="#">' +
        '       <img src="images/column_delete.png" alt="Delete criteria [criteria name]" role="button"  />' +
        '   </a>' +
        '</td>'
    };
}).call(window.idmsScreener.chefs, jQuery);
(函数($){
ko.bindingHandlers.slider={
init:function(元素、valueAccessor、allBindingsAccessor){
var options=allBindingsAccessor().sliderOptions | |{};
var sliderValues=ko.utils.unwrapObservable(valueAccessor());
if(sliderValues.min!==未定义){
options.range=true;
}
options.slide=函数(e、ui){
if(sliderValues.min){
//这里的错误
sliderValues.min(ui.values[0]);
sliderValues.max(ui.values[1]);
}否则{
sliderValues.value(ui.value);
}
};
ko.utils.domNodeDisposal.addDisposeCallback(元素,函数(){
$(元素)。滑块(“销毁”);
});
$(元素).滑块(选项);
},
更新:函数(元素、值访问器){
var sliderValues=ko.toJS(valueAccessor());
if(sliderValues.min!==未定义){
$(element.slider(“values”,[sliderValues.min,sliderValues.max]);
}否则{
$(element.slider(“value”,sliderValues.value);
}
}
};
此范围={
“厨师”:功能(厨房、名称、标签、食谱){
var food=新的this.viewModel(厨房);
food.name=名称;
食品标签=标签;
食物.总数(配方.数量结果);
food.criteriaMin=recipe.minValue;
food.criteriaMax=recipe.maxValue;
归还食物;
},
“视图模型”:功能(厨房){
var self=这个;
this.name='';
this.label='';
this.total=window.ko.observable();
this.criteriaMin=ko.observable(0);
该标准最大值=可观察的ko(100);
this.loading=window.ko.可观察(假);
this.template='';
this.getSelection=函数(){
返回null;
};
this.setSelection=函数(){
};
},
“模板”:”+
'' +
“最低金额”+
'   ' +
'   ' +
“最大金额”+
'   ' +
'' +
'' +
'' +
'   ' +
''
};
}).call(window.idmsScreener.chefs,jQuery);

我尝试将其从sliderValues.min()更改为sliderValues.min=ui.values[0];然而,通过更改,我似乎无法正确获取值。我还尝试更改滑块选项的“最小”和“最大”值,以便它们不是静态设置的,但这会引发完全不同的错误。如果您能帮助解决此问题,我们将不胜感激。

能够解决此问题。确定我正确设置了最小和最大标准。我用一个等号做作业,这个等号覆盖了可观察的对象。

也许你可以根据这把小提琴进行复制:我发现我的问题是我用错误的方式设置了viewmodel。在我做
food.criteriaMin=recipe.minValue之前;food.criteriaMax=recipe.maxValue而不是
食品.criteriaMin(recipe.minValue);食品.criteriaMax(配方.maxValue)