knockout页面中绑定model,一个页面中绑定多个model

knockout页面中绑定model有两种方式,ko.applyBindings 和 ko.attach

ko.applyBindings

  • 可以声明成使用data-bind的HTML元素或者容器。 ko.applyBindings(myViewModel,document.getElementById(‘someElementId‘))
  • 第二个参数可选。
  • 可以在同一个页面声明多个view model,用来区分区域。
  • 代码
//Knockout数据绑定
var ViewModel = function() {};
var jsonArray = [];
var viewModel = new ViewModel();
viewModel.data = ko.observableArray(jsonArray);
ko.applyBindings(viewModel, document.getElementById("content"));
//使用后已监控属性数据,后期只改变viewModel.data数据即可实现view层同步刷新。
    		
var cntModel = {};
cntModel.total_count = ko.observable("0");
ko.applyBindings(cntModel, document.getElementById("header"));

ko.attach

  • 添加如下js
<script src="Scripts/jquery-1.7.1.js" type="text/javascript"></script>
<script src="Scripts/knockout-3.1.0.js" type="text/javascript"></script>
<script type="text/javascript" src="Scripts/jquery.livequery.js"></script>
<!--Plugin-->
<script type="text/javascript" src="Scripts/knockout.multimodels-0.1.js"></script>
  • 追加Model名称,并且给元素指定对象名称
<div data-model="viewModel">
    <ul>
        <li data-bind="foreach:data">
            <span data-bind="text:name"></span>
        </li>
    </ul>
</div>
var ViewModel = function() {};
var jsonArray = [];
var viewModel = new ViewModel();
viewModel.data = ko.observableArray(jsonArray);
ko.attach('viewModel',viewModel);

+ 使用ko.applyBindings时, 如果存在多个Model,其中任意一个Model被指定了元素,其余的Model 也需要指定元素。
+ 数据已经获取到并且改变了,但是页面内容未改变,原因可能是又重新监控了一次,多写了一次viewModel.data = ko.observableArray(jsonArray);查查看试试删除。

转载于:https://my.oschina.net/yxmBetter/blog/1576753

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值