Tôi có một Nhà máy Góc có công việc là để lưu các đối tượng đặc biệt và truy xuất chúng sau này.
(Được sử dụng để lưu quy trình làm việc của người dùng khi anh chuyển chế độ xem).Làm thế nào để đẩy các đối tượng vào mảng bên trong của một Prototype JavaScript?
Về cơ bản tôi cần phải lưu các đối tượng có tên, cũng như một mảng thẻ. Vấn đề của tôi là với việc lưu các thẻ vào phần mảng.
Prototype constructor:
// define the TagsObject constructor function
var TagsObject = function(name, tag) {
this.name = name;
this.tags = [].push(tag);
return this;
};
Full Code Factory:
.factory('TagFactory', [function() {
// Init TagFactory:
var tagContainers = [];
// define the TagsObject constructor function
var TagsObject = function(name, tag) {
this.name = name;
this.tags = [].push(tag);
return this;
};
console.log('tagFactory');
console.log(TagsObject);
var saveTags = function(name, tag) {
tagContainers.push(new TagsObject(name, tag));
console.log('saveTags:');
console.log(tagContainers);
};
var getTags = function(name) {
console.log(name);
return this;
};
return {
saveTags : saveTags,
getTags : getTags
};
}]);
Trong một bộ điều khiển khác nhau bây giờ tôi tiết kiệm một số dữ liệu vào một new Prototype
bên trong TagFactory:
TagFactory.saveTags('TEST', tagObj);
Bây giờ trở lại Nhà máy của tôi, nơi bạn nhìn thấy console.log(nameTagContainers);
sau đây là nhật ký:
[TagsObject]
0: TagsObject
tags: 1
name: "TEST"
__proto__: TagsObject
length: 1
__proto__: Array[0]
^Thẻ là một mảng, nhưng hiển thị 1, thay vì chi tiết đối tượng ... bạn có thấy tôi đã đi sai không?
UPDATE: Câu hỏi này được trả lời dưới đây bởi Kauê Gimenes, tuy nhiên tôi đang chia sẻ mã thêm tôi thêm vào khắc phục vấn đề khác của tôi.
nào là mỗi khi một thẻ mới được lựa chọn cho một tên đang được chọn, nó tạo ra một thử nghiệm mới, thay vì tiết kiệm thẻ vào một thử nghiệm hiện có:
var saveTags = function(name, tag) {
console.log(tagContainers.length);
if (tagContainers.length != 0) {
for(var i = 0; i < tagContainers.length; i++) {
if (tagContainers[i].name == name) {
console.log('Found existing name! Add tag to existing obj');
tagContainers[i].tags.push(tag);
break;
} else {
console.log('New name, create new obj');
tagContainers.push(new TagsObject(name, tag));
}
}
}
else {
console.log('New name, init: create the first obj');
tagContainers.push(new TagsObject(name, tag));
}
console.log(' ');
console.log('tagContainers:');
console.log(tagContainers);
};
Ah yeah đó không làm việc, và không trả lời câu hỏi này ... tuy nhiên tôi chỉ nhận ra tôi đã viết mã này sai. Có một số thẻ mà người dùng có thể chọn cho 1 tên. Ngay bây giờ mã của tôi tạo một Mẫu thử nghiệm mới mỗi khi người dùng nhấp vào một thẻ mới chỉ với 1 tên. Cảm ơn! Tôi cần cập nhật mã của mình và có thể đăng câu hỏi mới. –
Tôi bao gồm một số thông tin bổ sung để làm cho câu trả lời rõ ràng hơn, nếu bạn vẫn có bất kỳ câu hỏi nào về điều này, vui lòng hỏi! –
ah ok để các thành phần * n * Mảng có thể sửa lỗi mới của tôi ở đây –