5
5df4e63d89
其他hanna • 于 2018-01-01发布 • 122次阅读 • (原文: gitissue.com)

重大变更

foreach指令,包含as选项的时候,不再创建循环内部的上下文,意味着循环内部访问外部属性无需$parent

// old version
<div data-bind="foreach:{data: list, as: 'item'}">
    <span data-bind="text: item.name"> </span>
    <span data-bind="text: $parent.outterAttr"></span>
</div>
// new version
<div data-bind="foreach:{data: list, as: 'item'}">
    <span data-bind="text: item.name"> </span>
    <!-- 无需使用$parent,context和foreach外部一致 -->
    <span data-bind="text:outterAttr"></span>
</div>

可以通过设置ko.options.createChildContextWithAs = true 来适配原有的代码(默认是false,不改代码的前提下版本升级适配)

功能增强

1. 添加childrenComplete指令和koDescendantsComplete方法

相当于生命周期里的afterrender方法 会在内部render完之后调用,koDescendantsComplete(组件内部调用)会等子组件全部渲染完之后调用

<div data-bind="childrenComplete:function(){}">
</div>
// 组件初始化方法
function init () {
   this.koDescendantsComplete = function () {
       // 组件初始化完调用,包含子组件
   } 
}

2.绑定String值支持`

<div data-bind="html:`<div>
  支持反引号了
</div>`"></div>

3.Observable arrays 添加了 sorted 和 reversed方法

和array的sort和revers方法不同,此方法无副作用,仅仅是返回数据的拷贝

4.添加了class指令

ko终于良心发现添加了,可以绑定多个类名

<div data-bind="class:classes"></div>

5.添加了let指令

和官网原来的指令例子withPropertise一致,减少$parent和$parentContext的使用(划重点很实用)

<div data-bind="let:{outterArr: outterAttr}">
        <parentmodal >
        // 内部可以直接使用outterArr
        // 无需通过params传参或者$parent获取
        </parentmodal>
    </div>

6.computed添加getDependencies方法

可以查看相应的属性依赖

7.添加ko.isObservableArray

可用于判断对象是否是ObservableArray

8.新增hidden指令 和visible相反

解读:状态切换再也不用 一个visible:flag 另一个 visible:!flag()这么写了

9.添加using指令

类似于with但效率更高

10.一些性能改进

字符串模板编译时添加缓存,不做更多描述

11.添加ko.when

用于执行一些只运行一次的方法

12.style指令变更

默认使用jQuery,可以使用background-color这样的标准样式名称(原来需要写成backgrounColor)

13.闭合标签校验添加

如果出现 "<-- /ko -->" 标签不匹配, ko现在会报错

14.observables添加spectate事件

Observables notify a new spectate event whenever their value changes. Unlike the standard change event, this new event isn't necessarily delayed by rate-limiting or deferred updates. You can subscribe to the event without waking a sleeping pure computed; the computed will notify the event if it is accessed with a new value. 尚未搞清楚实际应用场景,待我翻翻issue后续更新

一些链接

knockout 3.5.0 beta 发布说明原文

knockout 3.5.0 beta 新api 测试demo

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Top