Попытка использовать zclip в приложении Meteor

Не могу использовать zclip в моем простом приложении буфера обмена Meteor: http://commandc.meteor.com

Я думал, что мне чего-то не хватает в том, как метеор загружает jquery, zclip и скрипт копирования, поэтому я перенес все в html и использовал внешние источники. Тем не менее, копирование не работает. Здесь работает очень похожий код: http://jsbin.com/uladis/7/edit

PS: я знаю, что у меня есть еще одна проблема с копированием текста только правильного элемента, а не всех тегов p. Об этом пока не беспокоюсь.

РЕДАКТИРОВАТЬ: Использование метода Акшата ниже дает это исключение для каждого экземпляра копии:

Exception from Meteor._atFlush: TypeError: Object [object Object] has no method 'zclip' at Object.Template.copy.rendered (http://localhost:3000/command-c.coffee.js?78eccd42fde3d566da961e73c1ab9f4ad83a4e26:18:35) at Spark.createLandmark.rendered (http://localhost:3000/packages/templating/deftemplate.js?91fdd4353cca922f7a59ff593d000211c2857c84:125:44) at http://localhost:3000/packages/spark/spark.js?c202b31550c71828e583606c7a5e233ae9ca50e9:386:32 at Array.forEach (native) at Function._.each._.forEach (http://localhost:3000/packages/underscore/underscore.js?47479149fe12fc56685a9de90c5a9903390cb451:79:11) at http://localhost:3000/packages/spark/spark.js?c202b31550c71828e583606c7a5e233ae9ca50e9:384:7 at http://localhost:3000/packages/deps/deps-utils.js?f3fceedcb1921afe2b17e4dbd9d4c007f409eebb:106:13 at http://localhost:3000/packages/deps/deps.js?1df0a05d3ec8fd21f591cfc485e7b03d2e2b6a01:71:15 at Array.forEach (native) at Function._.each._.forEach (http://localhost:3000/packages/underscore/underscore.js?47479149fe12fc56685a9de90c5a9903390cb451:79:11)


person Dreyfuzz    schedule 09.03.2013    source источник


Ответы (1)


Я никогда не использовал Zclip, так что, надеюсь, я помог, включая эту другую проблему с правильным элементом:

При использовании <.. id='..' вам нужно убедиться, что каждый из них уникален, иначе DOM сломается: вместо <p id="copy"> используйте что-то вроде <p id="{{_id}}" class="copy">

Я пытаюсь получить доступ к данным шаблонов с помощью this.data

Template.copy.rendered = function() {
       $('#' + this.data._id).zclip({
           path:"http://www.steamdev.com/zclip/js/ZeroClipboard.swf",
           copy:this.data.name
       });
    }
}

И поэтому каждый щелчок по копии работает, используйте этот стиль шаблона

HTML:

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

<template name="list">
    {{#each copies}}
       {{>copy}}
    {{/each}
</template>

<template name="copy">
    <p id="{{_id}}" class="copy">{{name}}</p>
</template>

ИЗМЕНИТЬ

1) Добавьте JQuery, используя Meteor вместо <script>, используйте пакет meteor: В каталоге вашего проекта добавьте JQuery:

meteor add jquery

2) Добавьте файл по адресу http://www.steamdev.com/zclip/js/jquery.zclip.min.js в папку вашего проекта по адресу client/lib

Ошибка возникает из-за того, что zclip еще не загружен.

person Tarang    schedule 09.03.2013
comment
Попробовал это, и я получаю следующее исключение для каждого экземпляра копии: Пробовал это, и я получаю следующее исключение для каждого экземпляра копии: Exception from Meteor._atFlush: TypeError: Object [object Object] has no method 'zclip' - Полная трассировка в исходном сообщении - person Dreyfuzz; 10.03.2013
comment
Я редактирую ответ, это может решить проблемы с ошибкой zclip. - person Tarang; 10.03.2013
comment
Удивительно. Я люблю всю магию Метеора, но это заставляет меня чувствовать, что я иду вслепую. Спасибо за помощь! - person Dreyfuzz; 11.03.2013