Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
В js-методе формирую массив, состоящие из до 10 элементов, целочисленного типа, они же будут id объектов хранимиого класса, дальше нужно передать этот массив в ZEN-метод и получить доступ к экземплярам, id которых хранится в массиве... как это поумнее сделать не могу сообразить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 12:29 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
CacheLot, Все, что можно гонять между JS и ZEN, лежит в %ZEN.Datatype.* Соотв., как-то так, думаю: datatype class %ZEN.Datatype.list extends datatype This is a specialized datatype. On the server this represents a set of items as a piece-delimited string. On the client this is converted to a JavaScript array. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 12:35 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
kolesovCacheLot, datatype class %ZEN.Datatype.list extends datatype мдя, не много методов у этого класса, думаю мож тогда строку формировать, и на сервере разбирать и вытаскивать id ? по старинке(: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 12:41 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
Неа, не хочет у меня так работать - говорит, тока литеральные вэльи можно... тогда остается так: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 12:48 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
CacheLot, вот значит как: 1. на странице определить новове свойство: Код: plaintext массив формируется в виде строки с разделителем $c(5) 3. правило 2 (обращение из JS) как к обычному массиву, объявленному в JS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 15:21 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
Ymka2007 , т.е. так? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 15:31 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 16:46 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
все обращения через объект страницы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2010, 16:49 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
Ymka2007, Код: plaintext 1. 2. 3. 4. 5. 6. Даст ощутимые затраты трафика в обе стороны. Лучше уж тогда парсить строку с разделителями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 03:03 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
Добрый день CacheLot! Можно попробовать таким образом: Method saveItem() [ Language = javascript ] { var menu= zenPage.getComponentById('SelectMenu'); var itemCount=menu.getOptionCount(); var getStringItem = new Array(); for (i=0;i<itemCount;i++) { getStringItem[i]=menu.getOptionValue(i)+'^'+menu.getOptionText(i); } this.savePermissionGroup(getStringItem); } Method savePermissionGroup(listItem As %ListOfDataTypes) [ ZenMethod ] { s cl=##class(DATA.SHARED.GroupUserSys).%OpenId(..objID) s name=cl.Name d cl.SelectMenu.Clear() s res="" if (listItem'="") { for i=1:1:listItem.Count() { s clItem=##class(DATA.SHARED.ParamSaveGroup).%New() s clItem.value=$p(listItem.GetAt(i),"^",1) s clItem.text=$p(listItem.GetAt(i),"^",2) d cl.SelectMenu.Insert(clItem) s res=res_clItem.value_":U," } } ... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 10:59 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
kolesov, смотря что делать и в какой момент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2010, 11:18 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
YuraM, Благодарю, кое-что получилось. Теперь нужно как то протащить через js-метод объектную ссылку? Это можно организовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 11:48 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
CacheLotТеперь нужно как то протащить через js-метод объектную ссылку? Это можно организовать? Как вариант просто передать ИД, а сам объект уже открыть в методе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 11:50 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
krvsaCacheLotТеперь нужно как то протащить через js-метод объектную ссылку? Это можно организовать? Как вариант просто передать ИД, а сам объект уже открыть в методе... А если объект новый? Т.е. Id ещё не известен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 12:27 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
CacheLot , так ореф имеет привязку к самому процессу/джобу... Даже если ты его туда и передашь... Что это даст? Ведь браузер с JS живут соей жизнью, а кащейские методы своей... Да и откуда JS возьмёт ореф экземпляра? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 12:45 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
krvsa, Это понятно, я подумал может можно как предложил Yumka - создать свойство для хранения объектной ссылки, в определённый момоент зполнить его значением и в нужный момент считать с дальнейшим обнулением... как то так.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 13:18 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
CacheLot , если ты покинул кащейский метод - ореф утерян. Все изменения не записанные - утеряны. Т.ч. нет смысла даже хранить этот ореф... Тем паче его передавать через посредника (JS) другому методу... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 15:04 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
krvsa, +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 15:17 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, CacheLot! Может быть подойдет %ZEN.proxyObject? (все зависит от конкретной задачи) Из клиента на сервер Фрагмент кода "клиента" ... var obj = new zenProxy(); obj.name = 'Smith'; obj.code = 'CRM114'; var ok = this.MyMethod(obj); ... Фрагмент кода "сервера" ClassMethod MyMethod(pProxy as %ZEN.proxyObject) As %Boolean [ZenMethod] { Set tName = pProxy.name Set tCode = pProxy.code Quit 1 } Из сервера на клиент Фрагмент кода "сервера" ClassMethod GetServerInfo() As %ZEN.proxyObject [ZenMethod] { Set tProxy = ##class(%ZEN.proxyObject).%New() Set tProxy.whatever = "Some server value" Quit tProxy } Фрагмент кода "клиента" ... var obj = this.getServerInfo(); alert(obj.whatever); ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 18:51 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
Сделал тестовый пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. При этом в ZEN-методе alert('#(%page.rowArrayInfo)#'); - срабатывает со второго раза? Т.е. при обращении к tTest() - получаем 2 сообщения: количество элементов массива и пустую строку, и уже со второго раза - получаем то что нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 13:21 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
CacheLot, у тебя так и написано: 1. вызвать метод Test(), в котором выводится первое сообщение (кол-во элементов) 2. вызвать alert(#(...)#), в котором выводится объект rowArrayInfo ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 13:03 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
Ymka2007CacheLot, у тебя так и написано: 1. вызвать метод Test(), в котором выводится первое сообщение (кол-во элементов) 2. вызвать alert(#(...)#), в котором выводится объект rowArrayInfo только почему то объект rowArrayInfo - не обновляется сразу?? После вызова &js<zenPage.Test();> Как его обновить? Нужно сразу после формирования js-массива (т.е. после завершения js-метода) работать с ним на COS... Как это свойство rowArrayInfo обновить для использования в ZEN-методе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 14:05 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. напишите какой из вариантов запустился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 15:55 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
Ymka2007, Первый вариант упорно не желает отрабатывать, второй - без проблем! В моей задаче нужно было запустить именно первый вариант (без передачи объектной ссылки - задача не решалась), но я пошёл уже другим путём, массив буду формировать в серверным стиле, нашёл способ как обойтись без ява-скрипта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 19:51 |
|
||
|
Как передать массив JS в ZEN-метод?
|
|||
|---|---|---|---|
|
#18+
CacheLot, тут скорее всего такая фишка, что когда выполняется серверный метод, то перед началом выполнения он получает всю страницу целиком и опрерирует уже тем что получил, а в твоем случае он еще и выполняет какие то изменения на клиенте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 10:56 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=36446734&tid=1558215]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 506ms |

| 0 / 0 |
