ViewModel中有一个数组,代码大概如下:

function ReportViewModel(){
var self = this;
self.extendedProperties = ko.observableArray([]);
...
}
在从服务端获取到数据之后,使用下面的代码更新模型:
for (var index in json.extendProperties) {
reportViewModel.extendedProperties.push(extendProperties[index]);
}
knockout会根据extendedProperties使用我定义好的模板生成html,模板代码及绑定代码大概如下:
<script type="text/html" id="template-report-extendproperty">
<p class="the-week"><b data-bind="text:name"></b></p>
......
</script>
<!--使用汇报模板-->
<div class="write-report clearfix" data-bind="template: { name: 'template-report-extendproperty', afterRender: extendedPropertyRendered,foreach: extendedProperties }">
</div> 
上述代码在ie9及以上,chrome下运行良好。但在ie8下会提示“name为undefined”。
刚开始怀疑是ko在ie8下的bug,翻了下文档没有特殊说明,谷歌也没找到类似的问题。
然后怀疑是不是在往reportViewModel.extendedProperties里面push数据的时候,出现了一些脏数据。问了验证这个问题,把更新ViewModel的代码修改如下:
for (var index in json.extendProperties) {
var extendProperty = json.extendProperties[index];
consjole.log(index);
console.log(extendProperty);
createReportViewModel.extendedProperties.push(new ExtendProperty(extendProperty));
}
于是在控制台得到如下输出:
奶奶的,遍历完数组之后,把Array的prototype中的indexOf也给遍历出来了。看来是for in语法在ie8下不大好使,还是老实用$.each吧。更新ViewModel的代码最终修改如下:
$.each(json.extendProperties, function(i, n) {
reportViewModel.extendedProperties.push(new ExtendProperty(n));
});

ie8下使用knockoutjs遇到的一个模板异常的更多相关文章

  1. angular在ie8下的一个bug

    昨天拿项目在ie8下测试,发现不少bug,其中有一个bug让我很不解,报了一个thead开头的bug,因为已经切回到linux下了,我就不报具体是什么bug了,鼓捣了半天,发现引用angular的应用 ...

  2. IE8下div中2个button仅仅显示一个

    IE8下div中2个button仅仅显示一个,代码例如以下: <div id="adviceType" style="display: none;" &g ...

  3. jquery.validate.js在IE8下报错不运行

    因为项目要表单验证,所以特意去找了jquery.validate这个应该是jquery官方团队出品的表单验证插件. 实际应用时,却在IE8调试时碰到了问题. 从jquery.validate官网下载了 ...

  4. IE8下JQuery clone 出的select元素使用append添加option异常解决记录

    遇到一个怪现象,由于配置参数是多实例的, 故采用JQuery对模板HTML代码进行clone, HTML代码中包括select标签, 在克隆之后需要对select进行添加option. 在firefo ...

  5. 真~让IE8支持background: rbga; ,IE8下兼容rgba颜色的半透明背景

    IE8下兼容rgba颜色的半透明背景 这样的标题在百度和google搜索下很多篇文章,讲解IE8下兼容rgba的. 这些文章全部都是使用IE下的filter来使元素透明,但是这个里面会有bug. 它们 ...

  6. ie8下背景图片平铺问题

    IE9+及其他浏览器实现背景图片平铺可能需要一个属性就可以background-size:100%/cover; 但是ie8下background-size是不兼容的,因此我们需要用到滤镜,来解决背景 ...

  7. ie8下jquery改变PNG的opacity出现黑边,ie6下png透明解决办法

    目前互联网对于网页效果要求越来越高,不可避免的用到PNG图片,PNG分为几种格 式,PNG8 PNG24 PNG32,其中最常用的,也是显示效果和大小比较适中的则是PNG24,支持半透明,透明,颜色也 ...

  8. java动态生成带下拉框的Excel导入模板

    在实际开发中,由于业务需要,常常需要进行Excel导入导出操作.以前做一些简单的导入时,先准备一个模板,再进行导入,单有十几. 二十几个导入模板时,往往要做十几.二十几个模板.而且,当在模板中需要有下 ...

  9. javascripy的innerHTML在IE8下的异常

    使用jQuery的datatable插件的时候发现,IE8下显示异常,仔细调查一番,发现是浏览器对innerHTML的差异导致的. 实例代码: var nTd = document.createEle ...

随机推荐

  1. prim

    prim算法很难,但是我也把他写出来了.usaco3.1.1 #include <iostream> #include <cstring> using namespace st ...

  2. Java Struts2 POI创建Excel文件并实现文件下载

    Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...

  3. Getting Started With Hazelcast 读书笔记(第七章)

    第七章 部署策略 Hazelcast具有适应性,能根据不同的架构和应用进行特定的部署配置,每个应用可以根据具体情况选择最优的配置: 数据与应用紧密结合的模式(重点,of就是这种) 胖客户端模式(最好用 ...

  4. 传统B2B中小型企业如何做好全网营销

    优网特独创全网营销服务理念,全网营销即以企业网站推广为核心,通过SEO.SEM.BBS营销.博客营销.微营销.即时通讯营销.网络口碑营销.视频营销.邮件营销.SNS营销等网络营销手段,全面提升企业网站 ...

  5. call_user_function()方法的使用

    call_user_func ( callback $function [, mixed $parameter [, mixed $... ]] ) 调用第一个参数所提供的用户自定义的函数. 返回值: ...

  6. ncurses-devel

    :Install ncurses(ncurses-devel) and try again. 做一个简单的铺垫,ncurses是字符终端下屏幕控制的基本库.可能很多新开发的程序已经不再使用.假如要编译 ...

  7. 188. Best Time to Buy and Sell Stock IV leetcode解题笔记

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  8. 123. Best Time to Buy and Sell Stock (三) leetcode解题笔记

    123. Best Time to Buy and Sell Stock III Say you have an array for which the ith element is the pric ...

  9. [php-src]窥探Php内核中的数组与面向对象

    内容均以php5.6.14为例. 扩展中定义一个类有以下四步: #1. 声明一个存储类信息的指针. zend_class_entry *errs_ce; #2. 定义方法的参数信息,类的方法实现. Z ...

  10. vSphere6提示已弃用VMFS卷的解决方法

    Deprecated VMFS volume(s) found on the host. Please consider upgrading volume(s) to the latest versi ...