I am trying to get a listview filled with messages that reside in an array in the ViewModel. When i click on a category the function updateMessages is called. (shown below)
updateMessages fills in the messagesViewModel:
Which then gets shown in the view like this:
The problem is that everytime I click on a category the array just keeps on filling up. I want to empty the array before adding new messages. I tried to add a clearMessage function in the viewmodel that executed: this.messages.length = 0. This cleared the array but in the view model you can still see all the old messages. How can I remove those messages everytime this view is called upon.
01.function updateMessages(id, title) {02. var data = {03. 'language': "en",04. 'api_version': '2'05. };06. var categoryId = id.split('-').pop();07. categoryId = typeof categoryId !== 'undefined' ? categoryId : "";08. 09. var url = SERVER_NAME;10. if (categoryId === "") {11. url += '/secret/all';12. }13. else {14. url += '/secret/category/' + categoryId;15. }16. url += '?callback=?';17. $.getJSON(url, data, function(json) {18. var messages = '';19. $.each(json.messages, function() {20. messagesViewModel.addMessage(this.id, this.message, this.machine_timestamp, this.human_timestamp, this.number_comments)21. });22. messagesViewModel['title'] = title;23. });24. app.application.navigate('messages.html');25.}updateMessages fills in the messagesViewModel:
1.var messagesViewModel = kendo.observable({2. messages: [],3. title: '',4. 5. addMessage: function(id, message, machineTimestamp, humanTimestamp, comments){6. this.messages.push({id:id, message:message, machineTimestamp: machineTimestamp, humanTimestamp: humanTimestamp, comments:comments});7. }, 8.})Which then gets shown in the view like this:
01.<!DOCTYPE html>02. 03.<html>04. <head>05. <title></title>06. </head>07. <body>08. <div id="messageList" data-role="view" data-title="Secrets" data-model="messagesViewModel">09. <div id="messagesViewContent" data-role="content">10. <!-- list of secrets -->11. <ul id="messageList" data-role="listview" data-bind="source: messages" data-template="messagesTemplate" data-auto-bind="false">12. </ul>13. </div>14. 15. <script type="text/x-kendo-template" id="messagesTemplate">16. <a id="#:id#" href="messageDetails.html?id=#:id#&message=#:message#">17. <p>#:message#</p>18. </a>19. </script>20. </div>21. </body>22.</html>The problem is that everytime I click on a category the array just keeps on filling up. I want to empty the array before adding new messages. I tried to add a clearMessage function in the viewmodel that executed: this.messages.length = 0. This cleared the array but in the view model you can still see all the old messages. How can I remove those messages everytime this view is called upon.