Estoy tratando de Mostrar un valor basado en una tabla de valor de True o False. Por ejemplo, si el Valor es True, entonces yo quiero que Diga Compatible y Si es Falso, entonces quiero Decir que No es Compatible! Este es mi código html

<p><input type="text"  data-bind="value: Support"  /></p>

Código Java script

$(function() {
  dm.viewModel = function() {
    var clients = ko.observableArray(),
      selectedClient = ko.observable(),

      clientChanged = function() {
        $.getJSON(dm.WebServices + "/dm/get/clientinfo?client=" + encodeURIComponent(selectedClient()), function(data) {
          if (data != null) {
            dm.viewModel.Name(selectedClient());
            dm.viewModel.Support(data[0]['Support']);
          }
        })
        $('#divClientData').show();
      },

      LoadClients = function() {
        $('#divClientData').hide();
        $.getJSON(dm.WebServices + "/dm/get/clientlist", function(data) {
          $.each(data, function(key, val) {
            clients.push(val);
          });
        });
      },

      Name = ko.observable(),
      Support = ko.observable(),

      return {
        Name: Name,
        Support: Support
      };
  }();

  ko.applyBindings(dm.viewModel);
  dm.viewModel.LoadClients();
})

OriginalEl autor BrianMichaels | 2013-02-06

4 Comentarios

  1. 7

    En este tipo de casos se puede evaluar la propiedad y de procesamiento basado en el valor. Incluso una función puede ser suministrada dentro de la unión. Usted puede utilizar esta:

    <input type="text"  data-bind="value: Support() ? 'Supported' : 'Not Supported'"  />

    OriginalEl autor Konstantin Dinev

  2. 1

    Puede hacer que con el si la unión

    Véase la documentación aquí

    Ejemplo de la documentación:

    <label><input type="checkbox" data-bind="checked: displayMessage" /> Display message</label>
    
    <div data-bind="if: displayMessage">Here is a message. Astonishing.</div>

    Lo que

    <div data-bind="if: Support">Supported</div>
    <div data-bind="ifnot: Support">Not Supported</div>

    Edit: Las otras respuestas sugiere utilizar el valor vinculante con un ternario de la condición son, probablemente, una mejor manera de lograr esto. Voy a seguir con esto como referencia, pero te recomiendo que de la solución.

    OriginalEl autor Ben McCormick

  3. 1

    Lo que estás buscando, en este caso, es ko.calcula().

    EDITADO: (Apoyo parece estar en uso como un valor del conjunto de datos)
    Añadir un nuevo valor a su ViewModel, algo como esto:

    IsSupported = ko.computed(function(){
        if(this.Support() == true){
            return "Supported";
        } else {
            return "Not Supported";
        }
    }, this)

    Luego, en el marcado, usted tendrá que cambiar su enlazar los datos sólo ligeramente:

    <p><input type="text" data-bind="value: IsSupported" /></p>

    Alternativamente, si usted no quiere a cambio de su Apoyo en campo, tendrás que hacer algo como esto en tu HTML, como sugerido por otros comentaristas:

    <p><input type="text"  data-bind="value: (Support() ? 'Supported' : 'Not Supported')"  /></p>

    Yo recomiendo el primero, sin embargo, realmente, debe mantener la lógica escondido dentro de su ViewModel.

    (Véase el KO docs para obtener más información sobre calculada: http://knockoutjs.com/documentation/computedObservables.html)

    La segunda solución no va a funcionar, con el Apoyo de la variable sería necesario () después de correctamente ser calculada. Independientemente, si la unión es mucho más sencillo, ya que fue creada para este propósito.
    Gracias por la enmienda en cuanto al Apoyo(). Yo prefiero tomar el enfoque que extra de marcado se desperdicia marcado (y no muy SECO), en lo personal, pero lo que te lleva a donde tienes que ir.
    He utilizado el ko.calcula y me sale este error — de Dicho Error: No se puede escribir un valor en un ko.calculada a menos que se especifique una ‘escritura’ opción. Si desea leer el valor actual, no pasa ningún parámetro.
    Así, el Apoyo se asigna a un valor real en sus datos. En ese caso, usted necesita para seguir el segundo ejemplo (con el data-bind modificación en el marcado, dejando de Apoyo como un ko.observable() en su ViewModel). He editado mi respuesta para adaptarse a esto.
    (Y sí, estoy consciente de que mi ejemplo, podría utilizar un operador ternario en la calculada la función para la mayor brevedad. Yo lo hice de esa manera más de claridad.)

    OriginalEl autor Jason M. Batchelor

  4. 0

    En mi trabajo uso KO booleano condiciones como esta:

    <div id="bla" data-bind="visible: position != value"></div>

    KO es muy útil para aquellos tipos de problemas.

    Por favor podría elaborar más su respuesta añadiendo un poco más de descripción acerca de la solución que usted proporciona?
    Básicamente, estoy permitiendo la visibilidad de la div «bla» sólo si la posición (KO parámetro) es diferente de valor (que también puede ser un KO parámetro). La visibilidad se pone true si la posición es diferente al valor, y false si son diferentes

    OriginalEl autor Matansh

Dejar respuesta

Please enter your comment!
Please enter your name here