Передача переменной в строку, которая помещается в существующий массив - PullRequest
4 голосов
/ 25 мая 2011

Я пытаюсь передать переменную в строку, пока сама строка помещается в существующий массив, например:

var myVar = 'slug';

myArray.push(['item one', '/path/to/' + myVar + '/']);

Это не работает вообще. Я вижу правильное значение, присвоенное myVar; однако myVar в массиве даже не распознается как переменная.

Это кажется достаточно легким, но я явно что-то упускаю.

Спасибо за вашу помощь.

РЕДАКТИРОВАТЬ: не проблема Javascript для всех.

Как показала Алекс, это определенно нормально работает. (И да, это существующий массив.)

Однако я не упомянул, что метод push обернут в логику шаблонной логики Django, чтобы он запускался только на моем экземпляре dev, например, так:

{% ifequal INSTANCE 'DEVELOPMENT' %]
myArray.push(['item one', '/path/to/' + myVar + '/']);
{% endifequal %}

Я не упомянул логику, потому что не видел, как она может мешать. Я подтвердил, что:

  1. все с логикой велось как ожидалось
  2. МОМЕНТ фактически равнялся «РАЗВИТИЮ»
  3. и эта строка Javascript была видна в источнике, что было бы не так, если бы логика работала неправильно.

Однако, если я уберу эту логику Django, все с Javascript будет работать так, как нужно.

По какой-то причине эта логика на стороне сервера не позволяет мне передавать любые внешние значения в массив, на стороне клиента или сервера.

В качестве эксперимента я попробовал это ...

myArray.push(['item one', '/path/to/{{ block slug }}undefined{{ endblock }}/']);

... со следующим в дочернем шаблоне.

{{ block slug }}slug{{ endblock }}

То же самое происходит. При установленной логике шаблона значение равно /path/to/undefined. Без него значение /path/to/slug по желанию.

Почему это происходит, для меня загадка. Я могу обойти это, но если у кого-то есть мысли, я бы хотел их услышать.

Еще раз спасибо.


Вопрос со стороны Noob: что ТАКОГО этикета об изменении заголовков сообщений?

Ответы [ 3 ]

3 голосов
/ 25 мая 2011

Это определенно работает .

Возможно, вы хотели объединить Array вместо concat()? В данный момент вы нажимаете новый Array на существующий Array как член, в результате чего получается многомерный Array.

Я также предположил, что myArray уже указал на Array. Если нет, просто сделайте var myArray = [].

0 голосов
/ 25 мая 2011

Что не работает?

Вы создаете массив внутри массива.

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

myArray[0][1] // this is "/paht/to/slug/

Re-читание ваших комментариев звучит так, как будто вы пытаетесь получить доступ к свойству массива:

myArray.myVar

В javascript, если вы хотите иметь именованный элемент, вам нужно использовать объект.

myObject = {};
myObject.myVar = "/path/to/slug/";
alert(myObject.myVar) // "/path/to/slug/"

Или вы можете добавить его непосредственно в массив как свойство:

myArray.myVar = "/path/to/slug/";
alert(myArray.myVar);
0 голосов
/ 25 мая 2011

Вам нужно создать экземпляр массива перед использованием метода push:

var myVar = 'slug';
var myArray=new Array();
myArray.push(['item one', '/path/to/' + myVar + '/']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...