【问题标题】:How can i show a "saved message" inside a foreach item using Knockout js?如何使用 Knockout js 在 foreach 项目中显示“保存的消息”?
【发布时间】:2012-07-05 10:56:37
【问题描述】:

我有一个用于编辑某些项目的 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;
        });
    };
};

【问题讨论】:

  • 你需要显示你传入的代码,horarios....我认为它不是映射为 observables 的项目?

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


【解决方案1】:

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

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

这会将所有传入的东西变成可观察的。

但是,给定点击处理程序,您实际上可能想要处理每个数组项上的点击的东西,这里是一个显示正在运行的代码的小提琴:-

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

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

注意:我将日期选择器更改为简单的输入,并删除了仅用于示例的帖子...

【讨论】:

  • 谢谢基思!所以原因是它不可观察吗?我不知道为什么,因为 showGuardado 是 Horario 类的属性,如果 FechaIni 是可观察的,为什么 showGuardado 不是?我试图在 self.horarios 行之后添加你的代码,但它说 horario 没有定义。
  • 那是因为我拼错了 :) 而且,正如我所说,您没有显示创建数据的位置的代码,所以我只是在猜测
  • 我添加了一个小提琴,展示了一个改进的解决方案,这可能是你想要的
  • 完美!!用你的小提琴我可以修好它。我必须包含映射插件knockoutjs.com/documentation/plugins-mapping.html
猜你喜欢
  • 2017-03-31
  • 2021-02-08
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
相关资源
最近更新 更多