{"id":1321,"date":"2022-03-02T16:07:48","date_gmt":"2022-03-02T07:07:48","guid":{"rendered":"http:\/\/mylittleforest.kr\/wordpress\/?p=1321"},"modified":"2025-01-15T11:32:37","modified_gmt":"2025-01-15T02:32:37","slug":"cordova-todo-list","status":"publish","type":"post","link":"http:\/\/mylittleforest.kr\/wordpress\/blog\/2022\/03\/02\/1321\/","title":{"rendered":"Cordova Todo List"},"content":{"rendered":"\n<h2>Cordova Todo List \ud504\ub85c\uc81d\ud2b8<\/h2>\n\n\n\n<h3>mytodolist \ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \ubc0f \uc2dc\ud5d8<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\nD:\\cordova&gt;\n&gt; cordova create mytodolist com.example.mytodolist MyTodoList\n&gt; cd mytodolist\n&gt; cordova platform add android\n&gt; cordova run android\n<\/pre><\/div>\n\n\n<h3>NodeJS \uc11c\ubc84<\/h3>\n\n\n\n<p>index.js<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nvar todos = &#x5B;];\n<\/pre><\/div>\n\n\n<h3>\ud074\ub77c\uc774\uc5b8\ud2b8<\/h3>\n\n\n\n<p>mytodolist.js<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nvar todos = &#x5B;];\n\n$.ajax(&quot;http:\/\/localhost:3000\/todos&quot;).done(function(result) {\n    console.log(result);\n\n    todos = result;\n    for (const todo of todos) {\n        $(&quot;.contents ul&quot;).append(liTemplate(todo.text, todo.checked));\n    }\n});\n\n$(&quot;#addButton&quot;).click(function() {\n    var text = $(&quot;#inputBox&quot;).val();\n    todos.push({ text: text, checked: false });\n    $(&quot;#inputBox&quot;).val(&quot;&quot;);\n    console.log(todos);\n\n    $(&quot;.contents ul&quot;).append(liTemplate(text, false));\n    saveTodos();\n});\n\nfunction liTemplate(text, checked) {    \n    var li = $('&lt;li&gt;&lt;\/li&gt;');\n\n    alert(text);\n    li.attr('value', text);\n    li.append(inputTemplate(text, checked));\n    li.append(text);\n    li.append(buttonTemplate());\n\n    li.click(function(event) {\n        var el = $(event.target);\n        var index = el.index(&quot;li&quot;);\n        console.log(index);\n    \n        if (el.is(&quot;button&quot;)) {\n            todos.splice(index, 1);\n            $(&quot;li&quot;)&#x5B;index].remove();\n        }\n        else if (el.is(&quot;input&#x5B;type='checkbox']&quot;)) {\n            var isChecked = el.is(&quot;:checked&quot;);\n            if (isChecked) {\n                $($(&quot;li&quot;)&#x5B;index]).addClass(&quot;checked&quot;);\n                todos&#x5B;index].checked = true;\n            } else {\n                $($(&quot;li&quot;)&#x5B;index]).removeClass(&quot;checked&quot;);\n                todos&#x5B;index].checked = false;\n            }\n        }\n\n        saveTodos();\n    });    \n\n    return li;\n}\n\nfunction inputTemplate(text, checked) {\n    var inputTag = $('&lt;input type=&quot;checkbox&quot; id=&quot;checkBox&quot;&gt;');\n    inputTag.attr('checked', checked);\n    return inputTag;\n}\n\nfunction buttonTemplate(text) {\n    var buttonTag = $('&lt;button id=&quot;delButton&quot;&gt;X&lt;\/button&gt;');\n    return buttonTag;\n}\n<\/pre><\/div>\n\n\n<h3>\ube4c\ub4dc \ubc0f \uc2dc\ud5d8<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; title: ; notranslate\" title=\"\">\n&gt; npm run start\n\nnpm ERR! Missing script: &quot;start&quot;\n==&gt;\npackage.json\n&quot;scripts&quot;: {\n    &quot;start&quot;: &quot;node index.js&quot;\n  },\n\nError: Cannot find module 'express'\n==&gt;\n&gt; npm install -save express\n\n&gt; cordova run android\n<\/pre><\/div>\n\n\n<h3>\ud50c\ub7ec\uadf8\uc778 \uc124\uce58<\/h3>\n\n\n\n<h4>\ub0a0\uc9dc\uc120\ud0dd \ud50c\ub7ec\uadf8\uc778<\/h4>\n\n\n\n<ul><li>cordova-plugin-datepicker<\/li><li><a href=\"https:\/\/www.npmjs.com\/package\/cordova-plugin-datepicker\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.npmjs.com\/package\/cordova-plugin-datepicker<\/a><\/li><li>> cordova plugin add -save cordova-plugin-datepicker<\/li><\/ul>\n\n\n\n<h4>\uc54c\ub9bc \ud50c\ub7ec\uadf8\uc778<\/h4>\n\n\n\n<ul><li>cordova-plugin-local-notification<\/li><li><a href=\"https:\/\/www.npmjs.com\/package\/cordova-plugin-local-notification\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.npmjs.com\/package\/cordova-plugin-local-notification<\/a><\/li><li>cordova plugin add -save cordova-plugin-local-notification<\/li><\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\nfunction onSuccess(date) {\n    var text = $(&quot;#inputBox&quot;).val();\n    todos.push({ text: text, checked: false, date: date });\n    $(&quot;#inputBox&quot;).val(&quot;&quot;);\n    console.log(todos);\n\n    $(&quot;.contents ul&quot;).append(liTemplate(text, false, date));\n    saveTodos();\n}\n\n$(&quot;#addButton&quot;).click(function() {\n    datePicker.show(options, onSuccess, onError);\n});\n<\/pre><\/div>","protected":false},"excerpt":{"rendered":"<p>Cordova Todo List \ud504\ub85c\uc81d\ud2b8 mytodolist \ud504\ub85c\uc81d\ud2b8 \uc0dd\uc131 \ubc0f \uc2dc\ud5d8 NodeJS \uc11c\ubc84 index.js \ud074\ub77c\uc774\uc5b8\ud2b8 mytodolist.js \ube4c\ub4dc \ubc0f \uc2dc\ud5d8 \ud50c\ub7ec\uadf8\uc778 \uc124\uce58 \ub0a0\uc9dc\uc120\ud0dd \ud50c\ub7ec\uadf8\uc778 cordova-plugin-datepicker https:\/\/www.npmjs.com\/package\/cordova-plugin-datepicker > cordova plugin add -save cordova-plugin-datepicker \uc54c\ub9bc \ud50c\ub7ec\uadf8\uc778 cordova-plugin-local-notification https:\/\/www.npmjs.com\/package\/cordova-plugin-local-notification cordova plugin add -save cordova-plugin-local-notification<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false},"categories":[38,37],"tags":[],"_links":{"self":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1321"}],"collection":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/comments?post=1321"}],"version-history":[{"count":8,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1321\/revisions"}],"predecessor-version":[{"id":1336,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/posts\/1321\/revisions\/1336"}],"wp:attachment":[{"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/media?parent=1321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/categories?post=1321"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/mylittleforest.kr\/wordpress\/wp-json\/wp\/v2\/tags?post=1321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}