2017-09-08 1 views
1

Dans les cas en utilisant Kendo UI Observable (MVVM) pour l'élément HTML liant j'utilise parfois des valeurs calculées, mais je ne peux pas trouver un moyen de forcer la liaison à mettre à jour lorsque les valeurs dépendantes changement. Un exemple simple:Kendo UI Observable propriété calculée comment forcer la notification de changement

<div id="test3"> 
    1. <span data-bind="text: addr"></span><br /> 
    2. <span data-bind="text: addr1"></span><br /> 
    3. <span data-bind="text: addr2"></span><br /> 
</div> 

<script> 
    viewModel = kendo.observable({ 
     addr1: "", 
     addr2: "", 
     addr: function() { 
      return this.addr1 + ' ' + this.addr2; 
     }, 
     load: function() { 
      this.set("addr1", "123 Main St"); 
      this.set("addr2", "STE 101"); 

      //need to let view model know to update addr binding 
     } 
    }); 

    //to demonstrate the problem of notification bind here 
    kendo.bind($("#test3"), viewModel); 

    viewModel.load(); 

    //if I bind here it works, of course 
    //kendo.bind($("#test3"), viewModel); 

</script> 

J'ai un travail autour de ce où je mets l'élément « adr » directement, mais qui va à l'encontre du point de liaison de données.

Répondre

1

Changer votre fonction ADDR utiliser la fonction « get » pour récupérer les valeurs:

addr: function() { 
    return this.get("addr1") + ' ' + this.get("addr2"); 
}, 

La fonction « get » fait partie du cadre observable kendo. Lorsqu'il est utilisé comme ça, le kendo saura alors rafraîchir la valeur liée à votre fonction lorsque l'une des valeurs à l'intérieur, accessible via 'get', est 'définie' ailleurs.

+0

Eh oui, qui l'a fait, génial! – kpg