Author |
|
Ayumiesan Newbie
Joined: 03 March 2016
Online Status: Offline Posts: 11
|
Posted: 05 May 2016 at 2:26am | IP Logged
|
|
|
Hi,
i try to applying building on Ajax content, Here my javascript Code :
//Call of my popup
App.Screens.showPopup(AttachJDWPopup);
function AttachJDWPopup() {
this.files = ko.observableArray();
}
AttachJDWPopup.prototype.popupTemplate = function (){
return 'Popups_AttachJDWPopupViewModel';
};
AttachJDWPopup.prototype.onShow = function (){
this.getFiles();
};
AttachJDWPopup.prototype.getFiles = function(){
var self = this;
$.ajax({
type: 'POST',
url: './test.php',
success: function(jqXHR){
$('#testAffichage').html(jqXHR);
self.files(jqXHR);
}
});
}
AttachJDWPopup.prototype.onItemClick = function (){
console.log("clickItem");
};
Here, my template use :
<div class="mask" data-bind="click: onCancelClick"></div>
<div class="popup_panel">
<span class="close" data-bind="click: onCancelClick"></span>
<div class="panels">
<div class="panel files">
<div class="panel_content" id="testAffichage">
</div>
</div>
</div>
<div class="buttons">
<span class="button save" data-i18n="FILESTORAGE/BUTTON_SELECT" data-bind="i18n: 'text', click: onSelectClick"></span>
<span class="button save" data-i18n="FILESTORAGE/BUTTON_CLOSE" data-bind="i18n: 'text', click: onCancelClick"></span>
</div>
</div>
<span class="helper"></span>
Here my code in test.php :
<p class="itemJarvis" data-bind="click: onItemClick" data-id_fichier="1">Item1</p>
<p class="itemJarvis selected" data-id_fichier="2">Item2</p>
At this moment, i can open the popup and the binding are well applied. Now, i want to put some text using ajax in my template, so i call my function "getFiles()" i have the result put on my html, that is ok, but now, i want to apply building for use my "onItemClick" function.
And when i try to put in ajax response :
ko.applyBindings(self,document.getElementById('testAffichage'));
Apply binding work fine. But if i reload the popup Or just the content, i have an error message :
Uncaught Error: You cannot apply bindings multiple times to the same element.
Can you help me ?
|
Back to Top |
|
|
Igor AfterLogic Support
Joined: 24 June 2008 Location: United States
Online Status: Offline Posts: 6104
|
Posted: 05 May 2016 at 4:14am | IP Logged
|
|
|
The typical way that's done is:
Code:
.....
var applied = false;
.....
if (!applied){
ko.applyBindings(self,document.getElementById('testAffichage'));
applied = true;
} |
|
|
--
Regards,
Igor, AfterLogic Support
|
Back to Top |
|
|