javascript - Knockout Safari 验证错误

标签 javascript google-chrome knockout.js safari

我得到了 knockout 的项目,但我没有 knockout 的经验。 我在 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 之间的哪些区别?

最佳答案

因为这段代码是断章取义的,所以很难说出你在这里试图做什么,但我会在黑暗中试一试。

您的行中的“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”显式设置为这些变量,然后改用这些变量将保证您将引用您认为的东西。

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

关于javascript - Knockout Safari 验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45891995/

相关文章:

javascript正则表达式不起作用

html - 如何在 Chrome 中嵌入 PDF 而不出现错误或警告

javascript - 如果在 Javascript 中声明一个没有 New 的数组会怎样?

html - 固定导航上的 CSS 剪辑/剪辑路径在 Chrome 和 IE 中不合作

jquery - 如何在 Chrome 中 console.log jQuery DOM 元素?

javascript - KnockoutJs ko.utils.arrayFirst 不允许重复值作为结果

knockout.js - Knockout Native 绑定(bind),无容器绑定(bind)的语法错误

javascript - knockout 音频播放列表

javascript - 测试 React 组件是否已经渲染

javascript - 在 Jade 文件中使用 Ajax 返回值