【发布时间】:2013-10-07 19:56:15
【问题描述】:
在我的 javascript 文件中,我混合了敲除和 jquery,其中包含两个不同的视图模型,我无法显示结果:
Javascript:
位置视图模型
var positionViewModel = function (data) {
var _self = this;
_self.PositionName = ko.observable(data.PositionName);
_self.PositionRank = ko.observable(data.PositionRank);
_self.ContentRole = ko.observable(data.ContentRole);
}
positionViewModel.AddPositions = function (data) {
$.each(data, function (index, value) {
positionViewModel.PushPosition(value);
});
};
positionViewModel.PushPosition = function (postion) {
viewModel.PositionTypes.push(new positionViewModel(position));
};
用户视图模型
// the ViewModel for a single User
var userViewModel = function (data) {
var _self = this;
_self.ID = ko.observable(data.ID);
_self.Name = ko.observable(data.Name);
_self.Email = ko.observable(data.Email);
_self.ContentRole = ko.observable(data.ContentRole);
};
userViewModel.AddUsers = function (data) {
$.each(data, function (index, value) {
userViewModel.PushUser(value);
});
};
userViewModel.PushUser = function (user) {
viewModel.Users.push(new userViewModel(user));
};
职位和用户
ko.utils.arrayForEach(viewModel.PositionTypes(), function(position){
var usersInPosition = ko.utils.arrayFilter(viewModel.Users(), function(user){
return user.ContentRole() == position.ContentRole();
});
ko.utils.arrayForEach(usersInPosition, function(user){
});
});
绑定
// Binds the main ViewModel
var bindModel = function (data) {
var _self = viewModel;
viewModel.TotalUser = ko.computed(function () {
return _self.Users().length;
});
userViewModel.AddUsers(data);
ko.applyBindings(viewModel, $('#UserView')[0]);
};
查看页面
<ul data-bind="foreach:PositionTypes">
<li>
<div>
<span data-bind="text:PositionName"></span>
</div>
<ul data-bind="template: { name: 'grid', foreach: Users}">
</ul>
</li>
</ul>
结果示例:
首席执行官
詹姆斯
副总裁
约翰
工人
艾米
贝琪
如何更改视图以正确显示来自 javascript 文件的结果?
【问题讨论】:
-
你是如何应用 ko 绑定的?
-
你有什么烦恼?什么不工作?
-
@edhedges 我更新了我的帖子,上面显示了我的绑定 - 谢谢
-
@nemesv 职位名称未显示,职位内是用户姓名。如果我不在职位内循环,我可以显示用户的姓名,但因为我想在其中显示职位标题和用户
-
您的 PositionTypes 和用户是如何关联的?我在您的 POSITION ViewModel 上没有看到
Users属性...
标签: javascript knockout.js knockout-2.0