Knockout JS - 获取模态弹出窗口来编辑项目

Dan*_*son 1 javascript jquery twitter-bootstrap knockout.js

我是淘汰赛的新手,非常喜欢它.我正在尝试构建与此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>
Run Code Online (Sandbox Code Playgroud)

我制作了一个模板,其中每一行都有一个类似于示例的编辑按钮,但还没有完成绑定功能.现在我想做的只是onlick将所选数据传递给我的模态并显示我的模态,如下所示:

$('#myModal').modal('show'); 
Run Code Online (Sandbox Code Playgroud)

这是我最挣扎的一步.是否有任何明确的文件记录的菜鸟或示例,提示或任何类型的帮助,我会从这里让我朝着正确的方向.

The*_*yce 9

假设你将它们放在这样的列表中:

<ul data-bind="foreach: Employees">
     <li data-bind="text: fullName, click: showEmployee"/>
</ul>
Run Code Online (Sandbox Code Playgroud)

我建议的是将视图模型更新为如下所示:

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
}
Run Code Online (Sandbox Code Playgroud)

最后一件将使用KO 与绑定来包装你的模态

<div class="modal" id="myModal" data-bind="with: currentEmployee">
    <h1 data-bind="text: fullName"></h1>
</div>
Run Code Online (Sandbox Code Playgroud)

这样做是监听单个元素上的click事件,并自动将绑定到该元素的视图模型传递给您定义的单击处理程序.然后我们采用该视图模型,将其存储在自己的可观察对象中,然后像正常一样显示模态.这里的关键是with绑定,它只在存储在observable中的数据时执行,并且还将所有嵌套代码的上下文设置为存储在其中的员工currentEmployee.

如果你是新手,那里有很多东西,但是使用一个current可观察的样式来跟踪列表中的个别数据是与Knockout一起使用的一个很好的范例=)

PS.在http://learn.knockoutjs.com/教程真的很棒,如果您尚未这样做的工作,通过.