Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selectize createFilter中的JavaScript hasOwnProperty出现问题_Javascript_Jquery_Selectize.js - Fatal编程技术网

Selectize createFilter中的JavaScript hasOwnProperty出现问题

Selectize createFilter中的JavaScript hasOwnProperty出现问题,javascript,jquery,selectize.js,Javascript,Jquery,Selectize.js,我试图弄清楚一个整洁的基于jQuery的库的工作原理,这个库名为 在演示页面上,他们有一个“createFilter”函数的示例,我想用它来检查用户输入是否已经存在,如果不存在,则创建项目 selectize.js中的示例(用于电子邮件): 出于某种原因,它总是返回true,因此允许用户添加一个新项目,即使它已经存在,但经过数小时的测试,我确信它与此有关。options.hasOwnProperty-但我在弄清楚是什么和为什么方面走到了死胡同,任何帮助或指导都将不胜感激。我一直在尝试让creat

我试图弄清楚一个整洁的基于jQuery的库的工作原理,这个库名为

在演示页面上,他们有一个“createFilter”函数的示例,我想用它来检查用户输入是否已经存在,如果不存在,则创建项目

selectize.js中的示例(用于电子邮件):


出于某种原因,它总是返回
true
,因此允许用户添加一个新项目,即使它已经存在,但经过数小时的测试,我确信它与此有关。options.hasOwnProperty-但我在弄清楚是什么和为什么方面走到了死胡同,任何帮助或指导都将不胜感激。

我一直在尝试让createFilter也能正常工作,并查看了源代码,但似乎设置正确,但其中显然存在一个bug。目前,我的解决方案是使用实际的create方法。如果您在源代码中挖掘了一点(create选项的文档中提到),您会注意到在创建项之前,它会检查create的值是否是一个函数:

var setup = (typeof self.settings.create === 'function') ? this.settings.create : function(input) {
  var data = {};
  data[self.settings.labelField] = input;
  data[self.settings.valueField] = input;
  return data;
};
通过传入一个创建函数,该函数在传递某个条件时仅返回数据值,否则返回{},您可以有效地执行createFilter函数中希望执行的操作

$('#foo').selectize({
    create: function(input){
      var self = this;
      var data = {};
      // IF SOME CONDITION MET
      if (bar) {
        data[self.settings.labelField] = input;
        data[self.settings.valueField] = input;
      }          
      return data;
    },
 });

如果数据以{}的形式返回,则不会创建该项,用户可以根据需要继续修改它(或者被告知选择无效)

我认为您没有正确使用
.hasOwnProperty
。它仅用于区分原型属性和方法与对象自身的属性/方法。尝试
此选项。改为选项[匹配[0]==未定义。如果这有帮助,让我知道,这样我就可以把它作为一个答案添加进去。@JonathanGray-听起来不对。使用
.hasOwnProperty()
测试属性是否存在完全可以,如selectize示例代码所示。它不仅限于用于区分原型属性和对象属性。如果您建议的代码有效,那么
.hasOwnProperty()
也应该有效。@MichaelGeary-这正是我的想法!但我就是不知道它不起作用的原因是什么。。。我希望有人能看到发生了什么。@Michael-你知道吗?也许我在这里完全搞错了。。。我刚刚试着用一个非常普通的
createFilter
进行测试!this.options.hasOwnProperty(输入)-这也总是返回true??
var setup = (typeof self.settings.create === 'function') ? this.settings.create : function(input) {
  var data = {};
  data[self.settings.labelField] = input;
  data[self.settings.valueField] = input;
  return data;
};
$('#foo').selectize({
    create: function(input){
      var self = this;
      var data = {};
      // IF SOME CONDITION MET
      if (bar) {
        data[self.settings.labelField] = input;
        data[self.settings.valueField] = input;
      }          
      return data;
    },
 });