Javascript console.log返回c()而不是对象的值

时间:2014-06-21 16:20:45

标签: javascript object knockout.js observable console.log

我正在尝试使用console.log来获取self.subcategories对象在以下订阅函数中创建后的值。我总是在我的控制台中从c()获得console.log(self.subcategories)。我知道数据存在,因为我可以在不同的代码中使用它。我只是希望能够在console.log中看到它,这样我就可以获得更多信息并知道如何处理它。

function QuestionFilter(data, categories, getSubcategoriesByCategoryUrl, getQuestionsBySubcategoryUrl) {
  var self = this;
  self.categories = ko.observableArray(categories);
  self.subcategories = ko.observableArray([]);
  self.selectedCategory = ko.observable();

  self.selectedCategory.subscribe(function(category) {
    function search(nameKey, myArray){
      for (var i=0; i < myArray.length; i++) {
        if (myArray[i].parentCategory_id === nameKey) {
          self.subcategories.push(myArray[i]);
        }
      }
    }   
    search(category, categories);
    console.log(self.subcategories);
  });
};

包含Knockout.js库,因此有几个引用它。正如我所提到的,一切正常,我只是希望能够记录对象以帮助我编写更多代码。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

看看documentation(强调我的):

  

从observableArray中读取信息

     

在幕后,observableArray实际上是一个可观察的,其值是一个数组(加上,observableArray增加了下面描述的一些附加功能)。因此,您可以通过调用observableArray作为函数而不使用任何参数来获取基础JavaScript数组,就像任何其他可观察对象一样。然后,您可以从该基础数组中读取信息。例如,

alert('The length of the array is ' + myObservableArray().length);
alert('The first element is ' + myObservableArray()[0]);