2012-06-15 14 views
10

He Knockout.js siguiente objeto:Knockout.js - ¿cómo obtengo el valor de una propiedad observable dentro de un observable calculado?

var viewModel = { 
    description : ko.observable(""), 
    Name : ko.observable(""), 
    productid : ko.observable(""), 
    productmodel : ko.observable(""), 
    productnumber : ko.observable(""), 
    text_relevance : ko.observable(""), 
    mydunamicfield : ko.computed(function() { 
     return "bq=(and " + 
      ((this.description == "") ? "" : ("description:" + this.description + " ")) + 
      ")"; 
    } , this) 
}; 

Pero la propiedad mydunamicfield no está produciendo el resultado concatenado correcta. Si trato de hacer referencia a this.description() dentro de otra función, aparece el mensaje de error siguiente cuando se carga la página:

Property 'description' of object [object Window] is not a function 

¿Cuál es el problema en este caso?

Respuesta

13

En primer lugar, debe hacer referencia this.description como this.description() si desea obtener su valor.

En segundo lugar, trate de poner su campo computed fuera de su viewModel (como 'this' que es el viewModel en sí no está definido en el punto de crear la computed observable.

Ver http://jsfiddle.net/rAEqK/2/ para un ejemplo de trabajo.

Cuestiones relacionadas