我正在使用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>
Run Code Online (Sandbox Code Playgroud) 我使用KnockoutJS将数据绑定到页面,ViewModel正由使用映射插件的AJAX调用的JSON响应填充,如下所示:
$(function () {
$.getJSON("@Url.Action("Get")",
function(allData) {
viewModel = ko.mapping.fromJS(allData);
viewModel.Brokers.Url = ko.computed(function()
{
return 'BASEURLHERE/' + this.BrokerNum();
});
ko.applyBindings(viewModel);
});
});
Run Code Online (Sandbox Code Playgroud)
那里的中间部分不起作用(没有那个计算属性就可以正常工作)."Brokers"是一个可观察的数组,我想为数组中名为URL的每个元素添加一个计算值.我将Brokers数组绑定到foreach,我想将该URL用作href锚的属性.有任何想法吗?
是否有可能在映射过程中修改对象(缺少更好的术语)模式?我想是的,我似乎无法让它发挥作用.我正在尝试这样的事情:
var data = {
itemOne: 'someData',
itemTwo: 'moreData'
}
var mapping = {
"newItem": {
create: function(options) {
return ko.observable(false);
}
}
};
ko.mapping.fromJS(data, mapping, _model.observableArrayPart);
Run Code Online (Sandbox Code Playgroud) 我遇到了knockout.js的问题,并且映射插件没有为源数据中的子数组创建模型
var data = {
outer: [
{
'id': 1,
name: 'test outer',
inner: [{
'id': 1,
name: 'test inner'}]}]
};
function OuterModel(data) {
var self = this;
ko.mapping.fromJS(data, {}, this);
self.fullText = ko.computed(function() {
return self.id() + ". " + self.name();
});
}
function InnerModel(data, parent) {
var self = this;
ko.mapping.fromJS(data, {}, this);
self.fullText = ko.computed(function() {
return self.id() + ". " + self.name() + "(" + parent + ")";
});
}
function PageModel() {
var self = …Run Code Online (Sandbox Code Playgroud) 现在,我正在使用这个JSON与KO Mapping插件,它工作正常:
{
"Controls": [
{
"Fields": [
{
"Name": "emailField",
"Text": "email",
"Visible": true
},
{
"Name": "hiddenField",
"Text": "text",
"Visible": true
}
],
"Name": "form2",
"Type": "Form"
},
{
"Data": [
[
"Federico Aloi",
20
],
[
"Andres Lopez",
31
],
[
"Pablo Perez",
32
]
],
"Fields": [
{
"Name": "nameField",
"Text": "Nombre",
"Visible": true
},
{
"Name": "ageField",
"Text": "Edad",
"Visible": true
}
],
"Name": "datagrid1",
"Type": "Datagrid"
}
],
"Name": "pagina1",
"Title": "Probando el KO" …Run Code Online (Sandbox Code Playgroud) 我有一系列从服务中回来的物品.我正在尝试为每个Item实例定义一个计算的observable,所以我的直觉告诉我把它放在原型上.
计算的observable的一种情况:系统计算点,但用户可以选择覆盖计算的值.我需要保持计算值可用,以防用户删除覆盖.我还需要合并用户指定和计算的点,并将总计加起来.
我正在使用映射来执行以下操作:
var itemsViewModel;
var items = [
{ 'PointsCalculated' : 5.1 },
{ 'PointsCalculated' : 2.37, 'PointsFromUser' : 3 }
];
var mapping = {
'Items' : {
create : function(options) {
return new Item(options.data);
}
}
};
var Item = function(data) {
var item = this;
ko.mapping.fromJS(data, mapping, item);
};
Item.prototype.Points = function () {
var item = this;
return ko.computed(function () {
// PointsFromUser may be 0, so only ignore it if the value is undefined/null …Run Code Online (Sandbox Code Playgroud) 我从WCF接收数据并将其绑定到表.我在这个论坛上得到了帮助,可以添加一些计算字段,一切都很完美.我想在这张桌子的页脚添加一个总数.我的页面的简单版本可以在http://jsfiddle.net/qeUHd/3/上看到.基本上我想学习如何向我的ViewModel添加一个字段,该字段是我的样本"Amount"中另一个字段的总和的结果.任何帮助将不胜感激. http://jsfiddle.net/qeUHd/3/
如何使用knockout js mapping插件迭代绑定到数据的knockout可观察数组?我创造了这个小提琴来展示我的问题.当我尝试获取knockout js数组对象的值时,它返回一个函数.
有人可以帮我解决这个问题吗?我的代码如下所示.
//Sample JSON Array
var data =
[{"street":"2532 Falkark Dr", "lat":"39.926295", "lng":"-86.012919", "zipcode":"92256"},{"street":"8558 Appleby Ln", "lat":"39.922742", "lng":"-86.017637", "zipcode":"92256"}]
function ViewModel() {
var self = this;
self.addresses = ko.observableArray([]);
ko.mapping.fromJS(data, {}, self.addresses);
}
var viewModel = new ViewModel();
//function binding work order details to view
$(document).ready(function () {
ko.applyBindings(viewModel);
gothroughtheObservableArray(viewModel.addresses());
});
function gothroughtheObservableArray(Addressarray)
{
alert("Got Address Array of length "+Addressarray.length);
for (var i = 0, len = Addressarray.length; i < len; ++i) {
var address …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚我对Knockout的映射库有什么误解.我已经将它简化为一个简单的例子,并且仍然可以通过fromJS调用使其失败(而不是使用映射的变量更新).
在这个例子中,我从根本上犯了什么错误?
// Here's my view model
var ViewModel = function() {
this.firstName = ko.observable('first');
this.lastName = ko.observable('last');
};
var myVM = new ViewModel();
ko.applyBindings(myVM); // Apply to Knockout (works)
myVM.lastName('maiden name'); // Test an update (works)
var newData = {firstName: 'new', lastName: 'person'};
// Try update the ViewModel
ko.mapping.fromJS(newData, myVM); //(No update, or error)
// Intended result - UI updates to 'new person'
Run Code Online (Sandbox Code Playgroud)
和相应的观点:
<div class='liveExample' >
<p>First name: <input data-bind='value: firstName' /></p>
<p>Last name: <input data-bind='value: …Run Code Online (Sandbox Code Playgroud) 所以我有一个简单的Signalr/Knockout项目,它使用映射插件将一个简单的对象(带有更多项的数组的项)绑定到我在JS中定义的viewModel:
var someObjectMapping = {
'MyItemArray': {
create: function (options) {
return new MyItemViewModel(options.data);
}
}
}
var myItemMapping = {
'ItemChildren': {
create: function (options) {
return new ItemChildViewModel(options.data);
}
}
}
var SomeObjectViewModel = function (data) {
ko.mapping.fromJS(data, someObjectMapping, this);
}
var MyItemViewModel = function (data) {
ko.mapping.fromJS(data, myItemMapping, this);
}
var ItemChildViewModel = function (data) {
ko.mapping.fromJS(data, null, this);
}
Run Code Online (Sandbox Code Playgroud)
我使用SignalR的默认设置连接到我的集线器,如下所示:
var myHubProxy = $.connection.myHub;
myHubProxy.client.processSomeObject = function(someObject) {
console.log('SomeObject received');
var viewModel = new SomeObjectViewModel(someObject);
ko.applyBindings(viewModel); …Run Code Online (Sandbox Code Playgroud)