ورود

View Full Version : Unable to parse bindings در استفاده از knockout.js



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


ممنون میشم کسی کمکم کنه.