2014-05-13 38 views
0

你好溢出!敲除添加/绑定数据到对象里面foreach

我有问题绑定数据到一个foreach循环内的对象。现在我正在使用typeahead来获取自动完成功能。当我这样做时,我可以将某个特定对象的Id保存在一个变量中。我想将此Id添加到产品对象。

问题是将特定ID附加到特定产品。

用户可以根据需要添加或删除具有自动完成功能的产品/输入字段。

function Product() { 
    var self = this; 
    self.id = ko.observable(null); 
    self.name = ko.observable(); }; 

    var dataWithID = 12345; //this id comes from another function, will change. 
    //TODO: Attach the specific id to the product object. 

var ViewModel = function() { 
    var self = this; 
    self.selected = ko.observable(); 
    self.products = ko.observableArray([new Product()]); 
    self.add = function() { 
     self.products.push(new Product()); 
    } }; 


ko.applyBindings(new ViewModel()); 

http://jsfiddle.net/cH2NX/1/

/J

+0

是否要将此ID添加到通过您的self.add功能添加的每一件产品或者你想检索某个用户添加的每个产品的id? – milagvoniduak

+0

我想将特定的ID添加到即时消息输入的产品中。我使用typeahead来获得自动完成功能,该功能返回产品的名称和ID。所以每个产品都会有一个唯一的ID。 – JeppePepp

+0

当你使用打字机选择产品时,是否有任何形式的回调JavaScript函数?你可以发布它吗? – milagvoniduak

回答

1

只需将它推入产品,像这样

function Product(id) { 
    var self = this; 
    self.id = ko.observable(id); 
    self.name = ko.observable(); 
}; 

var ViewModel = function() { 
    var self = this; 
    self.selected = ko.observable(); 
    self.products = ko.observableArray([new Product()]); 
    self.add = function() { 
     self.products.push(new Product(dataWithID)); // <-- pass in here 
    } 
}; 
+0

然后我有问题的第一个对象不会有一个ID。即使您已完成添加新产品,也必须添加最新产品。我想准备好新产品,并将ID添加到已添加的产品中。你是否理解即时通讯问题? – JeppePepp

+1

wat ............ – djbielejeski

+0

当模型被实例化时,我没有id。 self.products列表中有一个对象,其中包含我不知道的ID ... – JeppePepp