Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Переменные, описываемые с помощью @ (https://javascript.ru/forum/misc/33837-peremennye-opisyvaemye-s-pomoshhyu-%40.html)

Jack Sparrow 10.12.2012 13:46

Переменные, описываемые с помощью @
 
Всем привет. Такой вопрос: обращаюсь к переменной модели ASP MVC в Javascript коде:
var listLength = "@(Model.orderList.Count)";

Длина списка считывается нормально в переменную listLength.
Я хочу пройти по всему массиву с помощью цикла, поэтому пишу так:
for (var i = 0; i < listLength; i++) {
          var myGeocoder = ymaps.geocode("Москва @(Model.orderList[i].AddressStreet) @(Model.orderList[i].AddressHome)");

          myGeocoder.then(function (res) { myMap.geoObjects.add(res.geoObjects); });
}

Но вот переменная i не доступна в строке
var myGeocoder = ymaps.geocode("Москва @(Model.orderList[i].AddressStreet) @(Model.orderList[i].AddressHome)");

Не могу понять, почему так, как правильно обращаться к переменной в куске строки @()?

schmetterling 10.12.2012 14:06

Цитата:

Сообщение от Jack Sparrow
var myGeocoder = ymaps.geocode("Москва @(Model.orderList[i].AddressStreet) @(Model.orderList[i].AddressHome)");

var myGeocoder = ymaps.geocode("Москва @(Model.orderList["+i+"].AddressStreet) @(Model.orderList["+i+"].AddressHome)");

Jack Sparrow 10.12.2012 14:10

Я так уже пробовал, но получается, что слово Москва - это строка, и совокупность +i+ это тоже строка, а вот все, что заключено в @() - это не строка. Вот скриншот:


lord2kim 10.12.2012 14:51

Jack Sparrow, попробуй заюзать круглые скобки
var myGeocoder = ymaps.geocode("Москва @(Model.orderList(i).AddressStreet) @(Model.orderList(i).AddressHome)");

ruslan_mart 10.12.2012 14:51

var myGeocoder = ymaps.geocode("Москва "+@(Model.orderList[i].AddressStreet)+" "+@(Model.orderList[i].AddressHome));

Так что ли?

Jack Sparrow 10.12.2012 15:10

Попробовал с кругдыми скобками, так к массиву обращаться нельзя :( А с вынесением слова "Москва " в отдельную строку тоже не проканало. Тут нужен какой-то способ вставить пользовательскую текущую переменную именно в блок @()

lord2kim 10.12.2012 15:11

Jack Sparrow, а так все работает?
var myGeocoder = ymaps.geocode("Москва @(Model.orderList[0].AddressStreet) @(Model.orderList[0].AddressHome)");

Jack Sparrow 10.12.2012 15:14

Попробовал считать список orderList из модели в переменную javascript
var orderList = "@(Model.orderList)";

Но когда обращаюсь к ней, ничего не считывается. Короче она не считалась из модели наверно :(
var myGeocoder = ymaps.geocode("Москва " + orderList[i].AddressStreet + " " + orderList[i].AddressHome);

Jack Sparrow 10.12.2012 15:14

lord2kim, да, так как ты написал - все работает, считывается первый элемент и все нормально отображается

Jack Sparrow 10.12.2012 20:22

А как вообще по-русски называется блок @() ? Я бы загуглил по нему хотя бы)


Часовой пояс GMT +3, время: 08:59.