`

ko(knockoutjs)动态属性绑定

阅读更多

ko(knockoutjs)动态属性绑定

 
knockoutjs 简称 koko的动态属性是指,ViewModel不确定的属性,而后期却需要的属性。什么是不确定属性,比如ListModel如果 编辑某一项,想把这一项的状态变更为Edit。数据并不包括Edit属性,mvvm绑定时,会发现报错。那么一定需要拓展ko才能达到我们的目的。
首先来认识有值属性绑定,和 无值属性绑定:
一、有值属性绑定:JS模型:
复制代码
1  $(function () {
2              var viewModel = function () {
3                  var self = this;
4  
5                  self.text = ko.observable(1);
6              };
7              ko.applyBindings(new viewModel());
8          });
复制代码
UI绑定:
<div data-bind='text:text'></div>
呈现:
二、无值属性绑定: JS模型:
复制代码
1         $(function () {
2              var viewModel = function () {
3                  var self = this;
4  
5                  self.text = ko.observable();
6              };
7              ko.applyBindings(new viewModel());
8          });
复制代码
当然text是一般值类型,用法 和 有值属性绑定一样,如果非值类型,而属性是一个对象,而需要使用with:UI绑定:
1     <div data-bind='with:text'>
2         <div data-bind="text:property"></div>
3     </div>
三、动态属性绑定:动态属性绑定,那么这个属性本身不确定,沿用ko的方法是很难去实现,所以 需要进行拓展。JS拓展:
复制代码
 1 //雾里看花 Q:397386036
 2          ko.bindingHandlers.ext = {
 3              update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
 4                  var value = ko.utils.unwrapObservable(valueAccessor());
 5                  for (var handler in value) {
 6                      if (value.hasOwnProperty(handler)) {
 7                          if (typeof viewModel[value[handler]] == 'undefined') {
 8                              viewModel[value[handler]] = ko.observable();
 9                          }
10  
11                          ko.bindingHandlers[handler].update(element, function () { return viewModel[value[handler]]; });
12                      }
13                  }
14              }
15          };
复制代码
JS模型:
1         $(function () {
2              var viewModel = function () {
3              };
4              ko.applyBindings(new viewModel());
5          });
UI绑定:
1 <div data-bind="ext:{text: 'text'}"></div>
2 <!--事件 便于 测试-->
3 <a href="javascript:void(0)" data-bind="click:function(){$data.text(1);}">更改text值</a>
ext中,第一个text是ko text方法,第二个text必须是字符串,是context/viewModel的属性。所以ext的动态属性,可以使用于任何ko方法,比如ext:{text:'text', value:'text'}呈现:
转自:博客园 雾里kanhua 《ko(knockoutjs)动态属性绑定
url:http://www.cnblogs.com/g_397386036/archive/2012/11/13/2768990.html
分享到:
评论

相关推荐

    ko knockoutjs动态属性绑定技巧应用

    总结来说,动态属性绑定技巧在Knockout.js中的应用,主要涉及扩展knockout的核心功能,以便根据运行时的需求动态地添加和绑定属性。这一技巧对于构建高度动态和可扩展的Web应用程序至关重要,能够帮助开发者更好地...

    KnockoutJS

    **KnockoutJS**,简称KO.js,是一个轻量级的JavaScript库,专注于MVVM(Model-View-ViewModel)设计模式,使得在Web开发中实现数据绑定和动态用户界面变得简单易行。它通过双向数据绑定特性,允许开发者在视图和模型...

    KnockoutJS中文文档新

    例如,`ko.computed`函数可以创建一个计算属性,当其依赖的属性变化时,计算属性的值也会自动更新。 ### 6. 嵌套视图模型与组件化 KnockoutJS支持嵌套的视图模型,这意味着可以将复杂的UI分解为多个独立的、可复用...

    KnockoutJS 3.X API 第四章之数据控制流foreach绑定

    为了使用 KnockoutJS 的 foreach 绑定,首先需要通过 &lt;script&gt; 标签引入 KnockoutJS 的库,然后使用 ko.applyBindings 函数来将 KnockoutJS 的绑定应用于页面的特定部分。 总的来说,KnockoutJS 的 foreach 绑定...

    Asp.Net MVC 4 KnockoutJS 框架实例

    这里,`ko.mapping.fromJSON`是KnockoutJS提供的映射函数,用于将JSON对象转换为可观察的对象,`ko.applyBindings`则是将视图模型绑定到DOM元素。 通过结合Asp.Net MVC 4和KnockoutJS,开发者可以创建出具有复杂...

    js knockoutjs 全国省市区三级联动

    在HTML中,我们可以使用 `data-bind` 属性来绑定这些 observable 到相应的控件: ```html , value: selectedProvince"&gt; ().cities, visible: selectedProvince, value: selectedCity"&gt; ().districts, visible: ...

    KOBindings:KnockoutJS的自定义绑定通常对使用SharePoint很有用

    KO绑定 bindingHandlers通常对于使用SharePoint很有用 有关概述,请参见的“部分。 我已经收集了其中一些绑定处理程序并构建了其他绑定处理程序。 在可能的情况下,我相信每个文件中的来源。 不幸的是,在使用...

    KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定

    总之,KnockoutJS的if绑定和ifnot绑定是数据控制流中非常重要的工具,它们提供了强大的条件渲染功能,使得开发者能够构建出响应数据变化的动态用户界面。通过结合foreach绑定和其他KnockoutJS的特性,开发者可以创建...

    knockoutjs动态加载外部的file作为component中的template数据源的实现方法

    总结来说,KnockoutJS的Component功能提供了构建复杂UI的强大工具,通过动态加载外部文件作为模板,可以实现更灵活的组件复用和管理。通过结合ViewModel和动态数据绑定,可以轻松创建响应式的用户界面。通过参数传递...

    gopherjs-ko:GopherJS绑定到KnockoutJS

    GopherJS-Ko GopherJS绑定到KnockoutJS安装go get github.com/mibitzi/gopherjs-ko 文献资料有关文档,请参见

    基于knockoutjs的分页脚本

    KnockoutJS是一个轻量级的MVVM(Model-View-ViewModel)JavaScript库,它使得在浏览器端处理动态数据变得简单易行。在网页应用中,分页功能是常见的需求,用于处理大量数据的显示,提高用户体验。本文将深入探讨如何...

    KnockoutJs中文教程

    这个教程是针对中文用户设计的,旨在帮助初学者和有经验的开发者快速掌握如何使用KnockoutJS来创建动态的、数据绑定的用户界面。 **1. 数据绑定** KnockoutJS的核心特性之一是数据绑定。它允许开发者将JavaScript...

    在knockoutjs 上自己实现的flux(实例讲解)

    以下是一个简单的使用示例,定义了四个KnockoutJS绑定区域:app1、app2、app3和app4。通过创建ViewModel,我们可以初始化store,并在其中定义`list`和`name`等观察属性。`vf`对象包含了添加类的`add`方法,该方法...

    KnockoutJS 3.X API 第四章之click绑定

    在KnockoutJS框架中,click绑定是用来响应DOM元素点击事件的一种机制,它允许开发者在用户与界面交互时执行JavaScript函数。KnockoutJS是一个轻量级的JavaScript库,用于构建可扩展的富数据应用程序。本文将详细介绍...

    BootstrapTable与KnockoutJS相结合实现增删改查功能【二】

    - knockout.bootstraptable.js,这是一个自定义的KnockoutJS绑定处理插件 - Department.js,这是用户自定义的JavaScript文件,用于具体实现数据模型和业务逻辑 2. 在KnockoutJS中定义了自定义绑定handler:...

    KnockoutJS 3.X API 第四章之事件event绑定

    KnockoutJS是一个轻量级的MVVM(Model-View-ViewModel)库,它使得数据绑定和DOM操作变得更加简单。在KnockoutJS 3.X版本中,事件绑定...在实际开发中,熟练掌握事件绑定能帮助你更高效地构建动态和响应式的前端界面。

    Cat-Clicker-KO:使用KnockoutJS构建的Cat Clicker

    然后,通过KnockoutJS的`data-bind`特性,将这些ViewModel属性和方法绑定到HTML元素上,使得它们能够在页面上实时反映出来。 除此之外,KnockoutJS还提供了如模板、计算属性等功能,这些可以帮助我们处理更复杂的...

    KnockoutJS 3.X API 第四章之表单textInput、hasFocus、checked绑定

    textInput绑定目的 textInput绑定主要用于&lt;input&gt;或者&lt;textarea&gt;元素。他提供了DOM和viewmodel的双向更新。不同于value绑定,textinput绑定是实时更新的。...pre data-bind="text: ko.toJSON($r

Global site tag (gtag.js) - Google Analytics