Javascript IE和Chrome执行knockoutjs与Firefox有什么不同?
我的模型是Javascript IE和Chrome执行knockoutjs与Firefox有什么不同?,javascript,knockout.js,cross-browser,Javascript,Knockout.js,Cross Browser,我的模型是 var emailModel = function (email, isPreferred) { this.Email = ko.observable(email); this.IsPreferred = ko.observable(isPreferred); }; var vm = function () { var self = this; self.emails = ko.observableArray([new emailModel('',
var emailModel = function (email, isPreferred) {
this.Email = ko.observable(email);
this.IsPreferred = ko.observable(isPreferred);
};
var vm = function () {
var self = this;
self.emails = ko.observableArray([new emailModel('', false)]);
self.addEmail = function () {
self.emails.push(new emailModel('', false));
};
self.removeEmail = function (email) {
self.emails.remove(email);
};
self.setPreferred = function (email) {
if (email.IsPreferred()) {
for (var i = 0; i < self.emails().length; i++) {
if (self.emails()[i] != email)
self.emails()[i].IsPreferred(false);
}
}
};
}
var emailModel=function(电子邮件,isPreferred){
this.Email=ko.observable(电子邮件);
此.IsPreferred=ko.可观察(IsPreferred);
};
var vm=函数(){
var self=这个;
self.emails=ko.observearray([new-emailModel('',false)]);
self.addEmail=函数(){
self.emails.push(新的emailModel(“”,false));
};
self.removeMail=函数(电子邮件){
self.email.remove(email);
};
self.setPreferred=函数(电子邮件){
if(email.IsPreferred()){
对于(var i=0;i
setPreferred在Firefox中正常工作,但在IE和Chrome中则不然。有人能解释一下吗
提琴来了
浏览器之间的区别在于绑定的更新顺序。只需添加1条调试行即可显示:
self.setPreferred = function (email) {
console.log(email.IsPreferred()) <-- here
if(email.IsPreferred()){
....
self.setPreferred=函数(电子邮件){
console.log(email.IsPreferred())多亏了这些答案和评论,我才明白这一点
在SET优先
self.setPreferred = function (email) {
if (email.IsPreferred()) {
for (var i = 0; i < self.emails().length; i++) {
if (self.emails()[i] != email)
self.emails()[i].IsPreferred(false);
}
}
};
你的小提琴似乎工作得很好。@Pointy设置首选项不像单选按钮那样工作。@Jamiec我无法说服我的客户…@xpluni你到底是什么意思?当我单击复选框时,任何其他已选中的复选框都会取消选中。@Pointy在chrome下对我不起作用。浏览器问题?这不应该被视为淘汰吗g?@Pointy-可能吧。这肯定是不一致的。
self.setPreferred = function (email, target) {
if (target.target.checked) {
for (var i = 0; i < self.emails().length; i++) {
if (self.emails()[i] != email)
self.emails()[i].IsPreferred(false);
}
}
};