Knockout JS-获取一个模式弹出窗口来编辑项目
Knockout JS - Geting a modal popup to edit items
我是knockoutJS的新手,非常喜欢它http://jsfiddle.net/mac2000/N2zNk/light/.我试着复制代码并根据自己的需要进行调整。问题是,我使用$.getJSON从服务器获取数据。jsfiddle示例似乎是为不同格式的数据而创建的,这让我很困惑。
因此,我宁愿采取不同的方法,而不是寻求帮助来查找代码的问题。希望你们不要介意。我从零开始,努力学习每一步,这样我就知道自己在做什么。
这是我到目前为止的代码,它非常适合简单地在表上显示我的数据。
<script type="text/javascript">
function EmployeeModal() {
var self = this;
self.Employees = ko.observableArray([]);
$.getJSON("../../../../_vti_bin/listData.svc/GDI_PROD_Incidents?$filter=ÉtatValue%20ne%20%27Fermé%27&$orderby=PrioritéValue desc",
function (data) {
if (data.d.results) {
self.Employees(ko.toJS(data.d.results));
}
}
);
}
$(document).ready(function () {
ko.applyBindings(new EmployeeModal());
});
</script>
我制作了一个模板,每行都有一个类似于示例的编辑按钮,但还没有完成绑定功能。现在我想做的是简单地将所选数据上传到我的模态,并显示我的模态如下:
$('#myModal').modal('show');
这是我最挣扎的一步。有人能为我提供任何清晰的文件吗?例如,提示或任何类型的帮助,让我从这里走上正确的方向。
假设它们在这样的列表中:
<ul data-bind="foreach: Employees">
<li data-bind="text: fullName, click: showEmployee"/>
</ul>
我建议更新你的视图模型,使其看起来像这样:
function EmployeeModal() {
var self = this;
self.Employees = ko.observableArray([]);
self.currentEmployee = ko.observable(null);
self.showEmployee = function(vm){
self.currentEmployee(vm);
$('#myModal').modal('show');
};
.... // rest of your view model here
}
最后一块将使用KO的绑定来包装您的模式
<div class="modal" id="myModal" data-bind="with: currentEmployee">
<h1 data-bind="text: fullName"></h1>
</div>
这样做的目的是监听单个元素上的单击事件,并自动将绑定到该元素的视图模型传递给您定义的单击处理程序。然后,我们采用该视图模型,将其存储在自己的可观察对象中,然后像法线一样显示模态。这里的关键是with
绑定,它只在可观察对象中存储数据时执行,还将所有嵌套代码的上下文设置为存储在currentEmployee
中的员工。
如果你是新手,这里有很多,但使用current
风格的可观察来跟踪列表中的单个数据是Knockout使用的一个很好的范例=)
p.Shttp://learn.knockoutjs.com/如果你还没有这样做的话,教程真的很好。
- 在窗口上运行Meteor;您're不在Meteor项目目录中”;升级到Meteor.js 1.3之后
- 同位素包装中项目之间的发际线间隙在窗口调整大小时
- 新项目的所有列表项弹出窗口在悬停时立即显示 - Javascript
- 如何在 JQGRID 新项目弹出窗口中应用 OnKeyUp 方法
- 使用 Meteor 项目约束窗口
- jQuery计算项目在可滚动窗口中的位置并滚动到它
- 如何在浏览器窗口/选项卡关闭时删除本地存储项目
- Knockout JS-获取一个模式弹出窗口来编辑项目
- 当我点击这个树的任何项目时,如何创建一个弹出窗口
- 当用户点击时,如何关闭Bootstrap弹出窗口(或任何项目)
- CSS/jQuery:将项目放在窗口高度会导致布局问题
- ExtJs5如何将浮动窗口作为项目添加到面板中
- 放大弹出窗口:如何禁用在某些项目上打开弹出窗口
- 使用Grunt的Node JS项目,生成的JS文件有ReferenceError:窗口未定义
- 引导弹出窗口没有出现在我的ASP.. NET MVC项目
- 使用for循环在项目上循环以更改弹出窗口的文本
- 防止电子应用程序重定向时,拖放项目在窗口
- 在窗口调整大小时重新排序DIV中的项目
- Selenium WebDriver w/Java在弹出窗口中选择项目时出现问题
- 为列表中的单个项目打开一个弹出窗口