如何使用Knockout js在foreach项目中显示“已保存的消息”?

时间:2012-07-05 10:56:37

标签: asp.net-mvc asp.net-mvc-3 knockout.js knockout-2.0

我有一个foreach用于编辑一些项目。 每个项目都有一个“保存”按钮。我想在按钮下面显示一条消息。 如何在点击事件中显示此消息? 这是html:

        <div id="divhorarios" data-bind="foreach: horarios">
    <div>
    <label>Fecha Ini: </label><input data-bind="value: FechaIni, datepicker: FechaIni, datepickerOptions: {dateFormat: 'dd/mm/yy'}" />
    <label>Fecha Fin: </label><input data-bind="value: FechaFin, datepicker: FechaFin, datepickerOptions: {dateFormat: 'dd/mm/yy'}" />
     <label>Nombre:</label> <input data-bind="value: Nombre"/>
    <br />
<button data-bind='click: $root.saveHorario'>Guardar</button>
    <br />
    <span data-bind="visible: showGuardado" style=" color: Green;">El horario ha sido guardado</span>
    </div>
    </div>

在模型的javascript代码中,我设置了showGuardado = true,但消息未显示:

var HorariosModel = function (horarios) {
    var self = this;


    self.horarios = ko.observableArray(horarios);


    self.guardarHorario = function (horario) {
        $.post('/admin/horariosjsonguardar/' + idModelo, horario, function (returnedData) {
            horario.showGuardado = true;
        });
    };
};

1 个答案:

答案 0 :(得分:0)

你还没有得到所有代码,但很可能你需要将其改为: -

self.horarios = ko.observableArray([]);
ko.mapping.fromJS(horarios, {}, self.horarios);

将所有传入的内容转换为可观察的内容。

然而,给定点击处理程序,你实际上可能想要处理每个数组项上的点击的东西,这里是一个显示代码实际操作的小提琴: -

http://jsfiddle.net/keith_nicholas/UqFP2/

这样每个按钮都是独立的,每个按钮都有自己的绿色消息。

注意:我将datepicker更改为一个简单的输入,并为示例删除了帖子...