title: Add JSON value to ko.computed in viewmodel
body: <p>I am busy creating a currency Module for my web app, I am using Yahoo Finance API to return the currency conversion rate of 2 currencies that I have defined in my local DB. I get the JSON data fine from the API, I just want to Bind the JSON data that I have received from the Finance API to my existing Viewmodel using ko.computed. I am not sure if I should be using ko.computed to achieve this, so any advice will help greatly.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>    var currency = function (data) {
          var self = this;
          self.CurrencyFrom = ko.observable(data.CurrencyFrom);
          self.CurrencyTo = ko.observable(data.CurrencyTo);
          self.ConversionRate = ko.computed(rates); // I WANT TO BIND THE VALUE FROM API HERE
      }
  
      var CurrencyModel = function (Currencies) {
          var self = this;
          self.Currencies = ko.observableArray(Currencies);
  
          self.AddCurrency = function () {
              self.Currencies.push({
                  CurrencyFrom: "",
                  CurrencyTo: "",
                  ConversionRate: ""
              });
          };
  
          self.RemoveCurrency = function (Currency) {
              self.Currencies.remove(Currency);
          };
  
          self.Save = function (Form) {
              alert("Could Now Save: " + ko.utils.stringifyJson(self.Currencies));
          };
  
          $.ajax({
              url: "CurrencyConfiguration.aspx/GetConfiguredCurrencies",
              // Current Page, Method  
              data: '{}',
              // parameter map as JSON  
              type: "POST",
              // data has to be POSTed  
              contentType: "application/json; charset=utf-8",
              // posting JSON content      
              dataType: "JSON",
              // type of data is JSON (must be upper case!)  
              timeout: 10000,
              // AJAX timeout  
              success: function (Result) {
                  var MappedCurrencies =
                $.map(Result.d,
         function (item) {
             getRate(item.CurrencyFrom, item.CurrencyTo);
  
             return new currency(item);
         }
         );
                  self.Currencies(MappedCurrencies);
  
              },
              error: function (xhr, status) {
                  alert(status + " - " + xhr.responseText);
              }
          });
      };
  
      //3rd Party JSON result from Yahoo Finance API
      function getRate(from, to) {
          var script = document.createElement('script');
          script.setAttribute('src', "http://query.yahooapis.com/v1/public/yql?q=select%20rate%2Cname%20from%20csv%20where%20url%3D'http%3A%2F%2Fdownload.finance.yahoo.com%2Fd%2Fquotes%3Fs%3D" + from + to + "%253DX%26f%3Dl1n'%20and%20columns%3D'rate%2Cname'&amp;format=json&amp;callback=rates"); //HERE I CALL THE VALUE TO OBTAIN THE CONVERSION RATE FROM API
          document.body.appendChild(script);
      }
  
  
      //I WANT TO ADD THIS TO MY VIEWMODEL
      var rates = function parseExchangeRate(YahooData) {
                  var rate = YahooData.query.results.row.rate;
          }
  
  
      $(document).ready(function () {
          var VM = new CurrencyModel();
          ko.applyBindings(VM);
          $('[rel=tooltip]').tooltip();
      })
  </code></pre>
  
  <p>The JSON returned from parseExchangeRate Function (Yahoo Query Result):</p>
  
  <pre><code>parseExchangeRate({"query":{"count":1,"created":"2013-01-18T06:46:41Z","lang":"en-US","results":{"row":{"rate":"0.1129","name":"ZAR to USD"}}}});
  </code></pre>