Javascript KnockoutJS中的子视图模型在Internet Explorer 8中引发异常
我有如下几点:Javascript KnockoutJS中的子视图模型在Internet Explorer 8中引发异常,javascript,mvvm,knockout.js,Javascript,Mvvm,Knockout.js,我有如下几点: var ChildViewModel = function (viewModel) { // state this.viewModel = viewModel; this.index = ko.dependentObservable(function () { return this.viewModel.selections().indexOf(this); }, this); this.remove = function
var ChildViewModel = function (viewModel) {
// state
this.viewModel = viewModel;
this.index = ko.dependentObservable(function () {
return this.viewModel.selections().indexOf(this);
}, this);
this.remove = function () {
this.viewModel.removeSelection(this);
};
this.moveUp = function () {
this.move(-1);
};
this.moveDown = function () {
this.move(1);
};
this.move = function (direction) {
var i = this.index();
this.remove();
this.viewModel.selections.splice(i + direction, 0, this);
};
// additional properties
};
var viewModel = {
selections: ko.observableArray(),
removeSelection: function (item) {
this.selections.remove(item);
},
addSelection: function (event) {
var child = new ChildViewModel(this);
this.selections.push(child );
}
};
ko.applyBindings(viewModel);
当我调用addSelection
时,我在KnockoutJS库中得到一个对象不支持此属性或方法
异常。我的应用程序在Firefox 3.6和Chrome中运行良好。我在IE8中遇到了一个例外。我正在使用KnockoutJS的2.0 1.3 Beta版
我做错了什么?好的,我有两个不同的问题 首先,我删除了获取数组值的方法,而是使用了可观察数组
// Bad code for IE8
this.viewModel.selections().indexOf(this);
// this works
this.viewModel.selections.indexOf(this);
此外,我还在为属性设置。IE抱怨for
是一个关键词
// Bad code for IE8
data-bind="attr: { for : logicalOperatorAndFieldId }"
// Good code for IE8
data-bind="attr: { 'for' : logicalOperatorAndFieldId }"
不要使用像
这样的自动关闭标签。当您使用knockout时,它也会在IE8、IE7中引起问题。您使用的是knockout的缩小版吗?如果是这样的话,也许给未压缩的版本一次机会,看看knockout中的哪一行出错,这可能会给可能的原因提供线索。@AlexKey-我会更新我的问题。@Daniel:我的错误-我不知道knockout有indexOf()的实现
。可能“this”在addSelection中绑定不正确-是否从元素绑定调用addSelection?(如果是这样的话,那么绑定看起来像什么?)这并没有回答我的问题。+1,我也有一个问题,IE8声称class
是一个关键字:data bind=“attr:{class:InitialClass}
使用字符串解决了它:data bind=“attr:{class':InitialClass}
我刚刚在attr绑定中遇到了IE8的问题。节省了我很多时间,谢谢!