Narutocc / knockout

0 stars 0 forks source link

knockout 入门 #1

Open Narutocc opened 6 years ago

Narutocc commented 6 years ago

knockout是一个轻量级的UI类库,通过MVVM模式使javascript前端UI简单化。

knockout是建立在以下3个核心功能之上的:

  1. 属性监控与依赖跟踪
  2. 声明式绑定
  3. 模板机制

Knockout.js数组常用的方法如下:

  1. myObservableArray.push():增加一个新的元素(末尾)
  2. myObservableArray.pop():删除一个元素,并返回值(末尾)
  3. myObservableArray.unshift():增加一个元素(开始)
  4. myObservableArray.shift():删除一个元素,并返回值(开始)
  5. myObservableArray.reverse():反转数组的顺序
  6. myObservableArray.sort():数组排序
  7. myObservableArray.splice():数组截取 observableArray新增的数组方法:
  8. myObservableArray.remove(someItem)移除数组内所有匹配someItem的对象,并把这些对象组成一个数组返回 myObservableArray.remove(function(item){return item.age<18}):移除myObservableArray数组内所有年龄属性小于18的对象,并返回这些对象组成新数组
  9. myObservableArray.removeAll():移除myObservableArray数组内所有数据,并返回这些数据组成一个新数组 myObservableArray.removeAll(['Char',132,undefined])移除myObservableArray数组内所有匹配'Char',132,undefined的对象并把它们组成新的数组返回

数据绑定: 数据绑定有三种方式:One-Time,One-Way,Two-way 如果值是通过ko.observable定义的说明是双向绑定,否则为One-Time绑定,在knockout不存在单向绑定 备注:One-Time:model跟view只进行一次绑定,数据仅加载一次,这种方式适用于报表数据; One-Way:单向数据绑定,model数据改变,view中的数据随之改变,反之不然。 Two-Way:双向数据绑定。

forEach循环

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>forEach</title>
</head>
<body>
    <table>
        <thead>
            <tr>
                <th>First name</th>
                <th>Last name</th>
            </tr>
        </thead>
        <tbody>
            <tr data-bind="foreach:people">
                <td data-bind="text:firstName"></td>
                <td data-bind="text:lastName"></td>
            </tr>
        </tbody>
    </table>
</body>
<script src="js/knockout-3.4.2.js"></script>
<script>
    ko.applyBindings({
        people:[{
            firstName:'aa',
            lastName:'11'
        },{
            firstName:'bb',
            lastName:'22'
        },{
            firstName:'cc',
            lastName:'33'
        }]
    })
</script>
</html>