2015-02-11 2 views
0

У меня есть веб-приложение с формой и количество входов:Вставка значения в шаблоне файла JavaScript и создания нового файла

<form action=""> 
    Title1:<br> 
    <input type="text" name="title1"> 
    <input type="text" name="title1Description"> 
    <br> 
    Title2:<br> 
    <input type="text" name="title2"> 
    <input type="text" name="title3Description"> 
    <br> 
    Title3:<br> 
    <input type="text" name="title3"> 
    <input type="text" name="title3Description"> 
    <br> 
    <button type="button">Insert an Generate!</button> 
</form> 

У меня также есть файл JavaScript, который действует в качестве шаблона:

template.js

function myFunction(p1, p2) { 
    return p1 * p2; 
} 

function mySecondFunction(p3, p4) { 
    return p3 - p4; 
} 

var myData = { 
    *title1* : { 
     Title: *title1*, 
     Description: *title1Description* 
    }, 
    *title2* : { 
     Title: *title2*, 
     Description: *title2Description* 
    }, 
} 

Когда пользователь нажимает на кнопку, как я могу генерировать копию template.js вставки значения от пользователя га s введено в xxxxx частями var myData и предложит пользователю загрузить вновь созданный файл?

Я могу использовать AngularJS, если это упростит, чем jQuery?

+0

Что вы имеете в виду под " копия template.js "и и что пользователь должен фактически загрузить? Файл js? – treegarden

+0

По копированию, я не хочу, чтобы файл template.js переписывался, он всегда должен быть шаблоном, так как многие пользователи могут/надеюсь, будут использовать приложение. Да, они должны загрузить новый .JS-файл со вставленными значениями. –

+1

Понимаю, см. Мой ответ, чтобы получить это. Дайте знать, если у вас появятся вопросы. – treegarden

ответ

1

Я не буду писать весь код, но вот что я думаю о том:

Когда кнопка нажата, вы можете передать значения, например, используя переменные GET. Нажмите here, чтобы узнать, как это работает.

Далее вы можете сохранить весь код js-файла в String и использовать значения из переменных GET.

И последнее, но не в последнюю очередь, используйте следующий код для загрузки файла, содержащего сгенерированную строку str:

window.open('data:text/csv,' + encodeURIComponent(str)); 

Редактировать Решение выше, не позволяет сохранить файл с имя настраиваемого файла. Если вы хотите, чтобы достичь этого, вам нужно будет немного поработать вокруг, потому что вы должны использовать скачать атрибут <a>:

var link = document.createElement("a"); 
var csv = "data:text/csv;charset=utf-8," + str; 
link.setAttribute("href", encodeURI(csv)); 
link.setAttribute("download", "template.js"); //custom file name here 
link.click(); 

Имейте в виду, что не каждый браузер поддерживает атрибут загрузки. Проверьте here, чтобы узнать больше.

Edit2 Хорошо, я написал код, потому что у меня был хороший день, и не так много сделать;) Вы можете найти его here (jsFiddle дает мне неприятности)

+0

, по какой-то причине это работает только в Chrome. Просто попробовал в последней версии Firefox, и загрузка не начнется. –

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