【问题标题】:Knockout safari validation errors淘汰赛Safari验证错误
【发布时间】:2017-08-28 00:21:17
【问题描述】:

我得到了淘汰赛的项目,但我没有淘汰赛的经验。 我在 safari/ios 中遇到奇怪的错误(windows chrome 和 android chrome - 一切正常)

origin: ko.observable().extend({
    required: {
        message: "Origin  is required."
    }
}),

var errors = ko.validation.group(this);
var lineErrors = ko.validation.group(this.lines, {
    deep: true,
    live: true
});
console.log(1, errors().length);
console.log(2, lineErrors().length);

在 chrome 中我得到了

1 - 0

2 - 0

在 Safari 中我得到了

1 - 2

2 - 0

我尝试更改 ko.validation.group(this, { deep: true, live: true }) - 没有影响

有错误的字段是预先输入的文本。

为什么?

我必须知道 Safari/knockout 和 Chrome/knockout 之间的哪些区别?

【问题讨论】:

    标签: javascript google-chrome knockout.js safari


    【解决方案1】:

    由于这段代码是断章取义的,因此很难判断您在此处尝试做什么,但我会在这里暗中试一试。

    您的行中的“this”可能...

    var errors = ko.validation.group(this);
    

    ...在 Chrome 中的解释与在 Safari 中的不同。 Chrome 可能认为它指的是一个对象,而 Safari 则认为它是另一个对象。

    Javascript 中的“this”关键字非常棘手,应谨慎使用。确保您指的是您想要引用的确切内容的一种常见做法是将“this”分配给其他一些范围内的变量,然后您可以完全确信您指的是您认为的内容你是。如果您使用闭包或函数中的其他函数,这一点尤其重要。 比如……

    var someOuterFunction = function() {
        var outerFunction = this;
    
        var someInnerFunction = function() {
            var innerFunction = this;
    
            var doSomeWorkWithTheOuterAndInnerFunctions(outerFn, innerFn) {
                //Perform some sort of work with your functions
            }
    
            //Call a function that performs some sort of work with your nested functions 
            doSomeWorkWithTheOuterAndInnerFunctions(outerFunction, innerFunction);
        }
    }
    

    创建和使用outerFunction 和innerFunction 变量是关键。将您的“this”明确设置为这些变量,然后使用这些变量将保证您将引用您认为的东西。

    希望对您有所帮助! :-)

    【讨论】:

      【解决方案2】:

      我变了

      <input data-bind='value:origin'>
      

      <input data-bind='textInput:origin'>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-18
        • 2013-10-24
        • 2012-11-02
        • 2011-08-09
        • 2014-05-28
        • 2017-04-30
        • 2013-08-29
        • 2012-11-04
        相关资源
        最近更新 更多