resident
دوشنبه 23 آذر 1394, 23:18 عصر
سلام.
من این کد رو دارم:
function SelectedImage(fileName, fileSize, fileContent) {
this.fileName = fileName;
this.fileSize = fileSize;
this.fileContent = fileContent;
this.category = ko.observable("None");
this.title = ko.observable("");
}
function viewModel2() {
var self = this;
self.categories = [{ id: 1, name: "نامه" }, { id: 2, name: "سند" }, { id: 3, name: "اسکن" }, { id: 4, name: "پرونده" }];
this.selectedImageArray = ko.observableArray();
self.addImages = function (imagefiles) {
for (var i = 0; i < imagefiles.length; i++) {
var f = imagefiles[i];
//toastr.success(f.name);
var reader = new ImageReader;
reader.onload = (function (curImage) {
return function (e) {
var data = e.target.result;
console.log(curImage.name + " ; size : " + curImage.size);
var fileContent = data;
self.selectedImageArray.push(new SelectedImage(curImage.name,
curImage.size,
fileContent));
};
})(f);
reader.readAsDataURL(f);
};
};
self.removeImage = function (selectedImage) { self.selectedImageArray.remove(selectedImage); };
self.removeAllImages = function (selectedImage) { self.selectedImageArray.removeAll(); };
self.totalImages = ko.computed(function () {
return self.selectedImageArray().length;
});
self.totalSize = ko.computed(function () {
var total = 0;
for (var i = 0; i < self.selectedImageArray().length; i++) {
total += self.selectedImageArray()[i].fileSize;
}
return total;
});
}
myViewModel2 = new viewModel2;
ko.applyBindings(myViewModel2);
از knockout.js هم استفاده کردم.
تو برنامه هم html زیر رو دارم:
<div class="col-md-11">
<input type="file" id="imagefiles" name="imagefiles" multiple title="افزودن پیوست" data-bind="event: { change: function () { addImages($element.imagefiles) } }" />
</div>
و
<table class="table table-striped table-hover" id="attachedimagetable">
<tbody data-bind="foreach: selectedImageArray">
<tr>
<td data-bind="text: fileName"></td>
<td>
<a style="display: inline" href="#" onclick="$(this).closest('tr').remove();">حذف</a>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
موقع اجرا خطای زیر رو میده.
Error: Unable to parse bindings.
Message: ReferenceError: selectedImageArray is not defined;
Bindings value: foreach: selectedImageArray
ممنون میشم کسی کمکم کنه.
من این کد رو دارم:
function SelectedImage(fileName, fileSize, fileContent) {
this.fileName = fileName;
this.fileSize = fileSize;
this.fileContent = fileContent;
this.category = ko.observable("None");
this.title = ko.observable("");
}
function viewModel2() {
var self = this;
self.categories = [{ id: 1, name: "نامه" }, { id: 2, name: "سند" }, { id: 3, name: "اسکن" }, { id: 4, name: "پرونده" }];
this.selectedImageArray = ko.observableArray();
self.addImages = function (imagefiles) {
for (var i = 0; i < imagefiles.length; i++) {
var f = imagefiles[i];
//toastr.success(f.name);
var reader = new ImageReader;
reader.onload = (function (curImage) {
return function (e) {
var data = e.target.result;
console.log(curImage.name + " ; size : " + curImage.size);
var fileContent = data;
self.selectedImageArray.push(new SelectedImage(curImage.name,
curImage.size,
fileContent));
};
})(f);
reader.readAsDataURL(f);
};
};
self.removeImage = function (selectedImage) { self.selectedImageArray.remove(selectedImage); };
self.removeAllImages = function (selectedImage) { self.selectedImageArray.removeAll(); };
self.totalImages = ko.computed(function () {
return self.selectedImageArray().length;
});
self.totalSize = ko.computed(function () {
var total = 0;
for (var i = 0; i < self.selectedImageArray().length; i++) {
total += self.selectedImageArray()[i].fileSize;
}
return total;
});
}
myViewModel2 = new viewModel2;
ko.applyBindings(myViewModel2);
از knockout.js هم استفاده کردم.
تو برنامه هم html زیر رو دارم:
<div class="col-md-11">
<input type="file" id="imagefiles" name="imagefiles" multiple title="افزودن پیوست" data-bind="event: { change: function () { addImages($element.imagefiles) } }" />
</div>
و
<table class="table table-striped table-hover" id="attachedimagetable">
<tbody data-bind="foreach: selectedImageArray">
<tr>
<td data-bind="text: fileName"></td>
<td>
<a style="display: inline" href="#" onclick="$(this).closest('tr').remove();">حذف</a>
</td>
</tr>
</tbody>
<tfoot>
</tfoot>
</table>
موقع اجرا خطای زیر رو میده.
Error: Unable to parse bindings.
Message: ReferenceError: selectedImageArray is not defined;
Bindings value: foreach: selectedImageArray
ممنون میشم کسی کمکم کنه.