Javascript Knockoutjs和建立视图模型
我在视图模型中有一个带有数组的Javascript Knockoutjs和建立视图模型,javascript,html,twitter-bootstrap,mvvm,knockout.js,Javascript,Html,Twitter Bootstrap,Mvvm,Knockout.js,我在视图模型中有一个带有数组的可观察的对象,我想用不同的项填充它,项1、项2,每个项都有自己的设置。所以我想找出最好的方法来解决这个问题 我目前的设置很糟糕,仍然有一些错误,我无法找出我做错了什么 例如,我创建了一个item1,然后保存,然后尝试创建另一个item1,当弹出窗口时,输入字段将填充我创建的第一个item1的值,我不知道为什么,因为我在保存后重置了变量 我只是想知道我做的是否正确,我能做些什么使它更好 请看我的 我确实缩小了我的Item1,但请记住,我有10多个变量 我也知道Item
可观察的对象,我想用不同的项填充它,项1、项2,每个项都有自己的设置。所以我想找出最好的方法来解决这个问题
我目前的设置很糟糕,仍然有一些错误,我无法找出我做错了什么
例如,我创建了一个item1,然后保存,然后尝试创建另一个item1,当弹出窗口时,输入字段将填充我创建的第一个item1的值,我不知道为什么,因为我在保存后重置了变量
我只是想知道我做的是否正确,我能做些什么使它更好
请看我的
我确实缩小了我的Item1,但请记住,我有10多个变量
我也知道Item1和Item2的设置是不同的,我只是在测试实现这一点的最佳方法,因为我知道我有10个以上变量的对象。小改动就可以了。将item1Setup
设置为可观察的相当简单的JavaScript变量,它不会对更改做出反应,例如self.item1Setup=ko.observable()
视图模型:
var myViewModel = function() {
var itemData = ko.observable({
"data": []
});
var self=this;
self.item1Setup = ko.observable(); //declare it here
//Create Item1 Popup
self.item1Setup(new item1("", 0, "")); // assign instance to observable
function createItem1() {
self.item1Setup().item1Id(getNewId()); // assign value to observable content
itemData().data.push(self.item1Setup());
shouldShowPopup(false, "Item1");
//reset back to defaults
resetVariables("Item1");
}
function resetVariables(resetType) {
switch (resetType) {
case "Item1":
self.item1Setup(new item1("", 0, "")); //you can reset as it is observable UI takes it changes
break;
default:
}
}
return {
itemData: itemData,
item2Id: item2Id,
item2Title: item2Title,
item2Location: item2Location,
item1Setup: self.item1Setup, //return observable
addItem2: addItem2,
createItem1: createItem1,
editItem1: editItem1,
getItem1FromList: getItem1FromList,
resetVariables: resetVariables
}
}
我突然出现了一些代码来解释关键问题检查createitem1的工作小提琴。有几种方法可以使其更好:
对按钮使用敲除的单击绑定
创建一个可观察的布尔值来控制模态可见性(每个模态都有自己的变量,它们都使用相同的绑定类型)
让你的物品成为自己的物品;没有以item2等为前缀的变量
不要让resetVariables
之类的东西去弄清楚你在使用哪种项目类型,让项目知道如何重置自己
好极了真不敢相信我一开始没这么做!非常感谢!完美现在我的问题解决了,我将大胆地做出一些改变!谢谢你的好建议!