GVKun编程网logo

javascript – Knockout.js绑定无线电组不起作用

14

以上就是给各位分享javascript–Knockout.js绑定无线电组不起作用,同时本文还将给你拓展asp.net–Knockout.js–数据绑定的javascript函数、javascript

以上就是给各位分享javascript – Knockout.js绑定无线电组不起作用,同时本文还将给你拓展asp.net – Knockout.js – 数据绑定的javascript函数、javascript – Knockout JS – 如何正确绑定observableArray、javascript – Knockout Js“你不能多次将绑定应用于同一个元素”、javascript – Knockout JS和大型模型等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

javascript – Knockout.js绑定无线电组不起作用

javascript – Knockout.js绑定无线电组不起作用

我觉得真的很蠢,但不能让它工作:)

http://jsfiddle.net/btkmR/

我做了这个简单的小提琴只是为了证明我在大项目中没有遗漏任何东西.

HTML:

<div>
    Preferred flavor
    <div><input type="radio" name="flavorGroup" data-bind="checked: cherryOn" /> Cherry</div>
    <div><input type="radio" name="flavorGroup" data-bind="checked: almondOn" /> Almond</div>
    <div><input type="radio" name="flavorGroup" data-bind="checked: mgOn" /> Monosodium glutamate</div>
</div>

JS:

var viewmodel = {
    cherryOn: ko.observable(true);
    almondOn: ko.observable(false);
    mgOn: ko.observable(false);
};

ko.applyBindings(viewmodel);

我希望在开始时选择Cherry.

解决方法

来自Knockout的文档( http://knockoutjs.com/documentation/checked-binding.html):

For radio buttons,KO will set the element to be checked if and only
if the parameter value equals the radio button node’s value attribute.

示例:http://jsfiddle.net/btkmR/2/

<div>
    Preferred flavor
    <div><input type="radio" name="flavorGroup" value="cherry" data-bind="checked: flavor" /> Cherry</div>
    <div><input type="radio" name="flavorGroup" value="almond"  data-bind="checked: flavor" /> Almond</div>
    <div><input type="radio" name="flavorGroup" value="Monosodium"  data-bind="checked: flavor" /> Monosodium glutamate</div>
</div>

var viewmodel = {
    flavor: ko.observable("cherry")
};

ko.applyBindings(viewmodel);

asp.net – Knockout.js – 数据绑定的javascript函数

asp.net – Knockout.js – 数据绑定的javascript函数

有没有办法我可以像这样调用数据绑定的JavaScript函数:
<span id="lblSomePropVal" data-bind="text: MySomeFunction(Someproperty())" ></span>

我想要做的是使用我的viewmodel的SomeProperty的值调用MySomeFunction。 My SomeFunction将根据传递的值返回一些文本,并将显示在span lblSomePropVal中。

我尝试了这个例子中写的方式,但是它会引发绑定错误。

我在这里缺少什么东西,还是有什么其他的办法呢?

这是我得到的错误:

Microsoft JScript runtime error: Unable to parse bindings.
Message: [object Error];
Bindings value: text: MySomeFunction(Someproperty())

解决方法

您可以使用任意JavaScript表达式进行绑定,但请记住,它们在viewmodel的上下文中进行评估,因此表达式中的所有函数都必须是viewmodel的属性。在您的情况下,MySomeFunction必须是您的viewmodel的属性。如果您使用映射插件创建viewmodel,则可以附加其他函数到viewmodel,如下所示:
var viewmodel = ko.mapping.fromJS(data.d)
viewmodel.MySomeFunction = function(...){...};

javascript – Knockout JS – 如何正确绑定observableArray

javascript – Knockout JS – 如何正确绑定observableArray

请看这个例子.
http://jsfiddle.net/LdeWK/2/

我想知道如何绑定可观察数组的值.我知道上面的例子中的问题,就是这一行

<p>Editing Fruit: <input data-bind="value: $data" /></p>

$data是实际值,而不是通常绑定的observable函数.
这似乎应该是一个非常简单的过程,但我不能弄清楚.

在其他情况下,我使用了observable数组,并将observable对象作为observable数组的每个元素.我想知道如何让这个工作与可观察的数组.

谢谢

解决方法

如果您对数组或observableArray中的项目进行读/写操作,那么它们将需要是对象的属性.否则,$data将是未解释的可观察者,KO无法写入实际的可观察值.

你必须做一些像:

var viewmodel = function(myFruit) {
    var observableFruit = ko.utils.arrayMap(myFruit,function(fruit) {
        return { name: ko.observable(fruit) }; 
    });
    this.fruit = ko.observableArray(observableFruit);
};


ko.applyBindings(new viewmodel( ["Apple","banana","orange"] ));

这里有一个例子:http://jsfiddle.net/rniemeyer/LdeWK/3/

个别的水果不一定需要被观察到,除非你需要你的UI来对变化的值做出反应(你的样本需要做出反应,因为你显示了一个只读的水果列表).

javascript – Knockout Js“你不能多次将绑定应用于同一个元素”

javascript – Knockout Js“你不能多次将绑定应用于同一个元素”

我正在使用kendo移动应用程序构建器,我使用knockout js进行绑定,但我收到错误“你不能多次将绑定应用于同一个元素”.我有两个 javascript文件,包含绑定,在我的代码下面
//Employee.js//

function Employeeviewmodel() {
   this.EmployeeName= ko.observable();
   this.EmployeeMobile= ko.observable();
   this.EmployeeEmail= ko.observable(); }
   ko.applyBindings(new Employeeviewmodel());

//Company.js//
function Companyviewmodel() {
   this.CompanyName= ko.observable();
   this.CompanyMobile= ko.observable();
   this.CompanyEmail= ko.observable(); }
   ko.applyBindings(new Companyviewmodel());

//In index page i am using this both script file drag and drop//
<html>
 <head>
 </head>
 <body>
  <script src="Employee.js"></script>
  <script src="Company.js"></script>
 </body>
</html>

解决方法

“ko.applyBindings”函数有两个参数:
applyBindings(viewmodelOrBindingContext,rootNode);

第一视图模型

second – 将应用绑定的DOM节点

在两个函数中,只使用第一个参数调用“ko.applyBindings”方法两次.这意味着您要将两个不同的模型绑定到同一节点 – 文档根目录.这会导致错误.

您可以使用两种方法:

>使用子模型创建一个全局视图模型并仅应用绑定一次:

//Employee.js//
function Employeeviewmodel() {
   this.EmployeeName= ko.observable();
   this.EmployeeMobile= ko.observable();
   this.EmployeeEmail= ko.observable();
}

//Company.js//
function Companyviewmodel() {
   this.CompanyName= ko.observable();
   this.CompanyMobile= ko.observable();
   this.CompanyEmail= ko.observable();
}

//In index page i am using this both script file drag and drop//
<html>
 <head>
 </head>
 <body>
  <script src="Employee.js"></script>
  <script src="Company.js"></script>
  <script>
   ko.applyBindings({ employee: new Employeeviewmodel(),company: new Companyviewmodel() });
  </script>
 </body>
</html>

>将绑定应用于不同的节点:

“`

//Employee.js
function Employeeviewmodel() {
   this.EmployeeName= ko.observable();
   this.EmployeeMobile= ko.observable();
   this.EmployeeEmail= ko.observable();
   ko.applyBindings(new Employeeviewmodel(),document.getElementById("employee"));
}

//Company.js
function Companyviewmodel() {
   this.CompanyName= ko.observable();
   this.CompanyMobile= ko.observable();
   this.CompanyEmail= ko.observable();
   ko.applyBindings(new Companyviewmodel(),document.getElementById("company"));
}

//In index page i am using this both script file drag and drop//
<html>
 <body>
  <script src="Employee.js"></script>
  <script src="Company.js"></script>
  <div id="employee"></div>
  <div id="company"></div>
 </body>
</html>

“`

javascript – Knockout JS和大型模型

javascript – Knockout JS和大型模型

我想弄清楚使用KnockoutJS的最佳方法,我需要你的建议.

我的视图模型包含一组“文档”,每个文档都有一组“值”.
使用以下模板将每个“文档”呈现为单独的表:

一切都很好,除非视图模型很大.

例如,如果视图模型的大小约为1兆字节(并且包含80个文档,每个文档包含60个值),则在我的计算机上渲染需要两分多钟.

我想知道是否有一种方法可以显着提高性能…或者放弃Knockout并在服务器端构建html并将其推送到浏览器会更快…

渲染“仅”300kb视图模型需要接近30秒.

“文档”由用户定义,因此甚至有> 2兆字节的场景(我不知道他们为什么这样做).

有没有人有JavaScript大视图模型的经验?

最佳答案
根据您当前无法延迟加载(按需加载)数据的要求,您的数量非常有限.

服务器端HTML

生成HTML服务器端将是最快的方法.但即便如此,如果模型很大,也会有延迟.考虑下载一个5MB的HTML文件,这将花费你的浏览器一些时间来解析和渲染如此大的东西.

仍然使用KNOCKOUT JS

如果您仍想使用Knockout JS框架,那么我最好的建议是将每个Document放在IFRAME中.这不是真正推荐的,会给您的服务器带来额外的负担,但如果正确实施可以加快您的用户体验.

www.mysite.com/view/1

客户端浏览器最初将获得包含所有IFRAME的所有HTML,它将异步地为每个IFRAME分派请求.每个单独的Document请求将使用Knockout JS在其自己的帧中异步呈现.

为了改善用户交互,您甚至可以在IFRAME上设置加载事件. load事件可以重新调整IFRAME的大小,因此没有滚动条,或者从IFRAME中提取HTML并用提取的HTML替换IFRAME元素.

关于javascript – Knockout.js绑定无线电组不起作用的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于asp.net – Knockout.js – 数据绑定的javascript函数、javascript – Knockout JS – 如何正确绑定observableArray、javascript – Knockout Js“你不能多次将绑定应用于同一个元素”、javascript – Knockout JS和大型模型的相关信息,请在本站寻找。

本文标签: