2015-11-27 2 views
2

Код:Почему длина массива не отображается в браузере?

initialize: function() { 
    this.todos = [ 
     {id: 100, text: 'Rich'}, 
     {id: 200, text: 'Dave'} 
    ]; 
    }, 



activeTodos: function() { 
    this.todos = this.todos.length(function() { 
     return this.todos; 
    }); 
    this.emitChange(); 
    } 



<p>Todo's Remaining: {this.activeTodos} </p> 




activeItems: function(){ 
    this.context.executeAction(activeToDosAction); 
    }, 

Объяснение:

Я пытаюсь напечатать размер массива в окне браузера (это можно увидеть в <p> тегов в коде). Пока ничего не отображается, и я не могу понять, почему. activeTodos следует называть длиной todos.

Я могу разместить больше кода, если люди этого требуют. Я использую responsejs, следовательно, {} скобки в HTML

ответ

0

Есть пара странных вещей. Если вам нужно только, чтобы отобразить длину this.todos вы можете сделать что-то вроде этого:

<p>Todo's Remaining: {this.todos.length} </p>

1

Я думаю, что проблема здесь в том, что вы передаете функцию длины. Это не требуется.

Ваш код должен работать, если изменить его на:

activeTodos: function() { 
    return this.todos.length; 
} 

Я не уверен, что ваша функция emitChange должна делать, поэтому я опустил его сейчас в примере кода. Если вам нужно, чтобы он был вызван, поместите его перед возвратом, поскольку это последнее, что будет выполняться в вашей функции.

0

Во-первых, чтобы получить доступ к длине массива вы просто должны сделать

myArray = [1, 2, 3]; 
myArray.length; //3 

Кроме того у вас есть 2 fonctions: Инициализировать и activeTodos, где вы используете this.todos = ...

Без дальнейшего объяснения Я предполагаю, что эти переменные, созданные с ключевым словом «это» внутри 2 разных функций, не соответствуют требованиям.

Убедитесь, что ваш this.todos относится к одной и той же вещи.

0

Вам не нужно active.Todos() as .length является встроенной функцией самостоятельно.

Вобще

Todo остающееся: {} this.todos.length

Приветствия.

Смежные вопросы