【发布时间】:2016-08-22 09:58:00
【问题描述】:
我试图实现的是实例化多个视图模型(数字是可变的),但是点击时绑定的函数只会影响最后一个实例,无论我从哪里点击。
JS
function Photo(name){
var self = this;
self.name = name;
}
function SectionPhotosViewModel() {
var self = this;
// Editable data
self.photos = ko.observableArray([
{
name: 'smth'
},
{
name: 'smth else'
}
]);
// Operations
self.addPhoto = function() {
self.photos.push(new Photo('anything'));
}
}
function bindSectionPhotos(element, index, list){
ko.applyBindings(SectionPhotosViewModel, element);
}
_.each(document.querySelectorAll( 'fieldset.room' ), bindSectionPhotos)
HTML
<fieldset class="room">
<div data-bind="click: addPhoto;" class="btn btn-success">Add new</div>
<ul data-bind="foreach: photos">
<li data-bind="text: name"></div>
</ul>
</fieldset>
<fieldset class="room">
<div data-bind="click: addPhoto;" class="btn btn-success">Add new</div>
<ul data-bind="foreach: photos">
<li data-bind="text: name"></div>
</ul>
</fieldset>
<fieldset class="room">
<div data-bind="click: addPhoto;" class="btn btn-success">Add new</div>
<ul data-bind="foreach: photos">
<li data-bind="text: name"></div>
</ul>
</fieldset>
<fieldset class="room">
<div data-bind="click: addPhoto;" class="btn btn-success">Add new</div>
<ul data-bind="foreach: photos">
<li data-bind="text: name"></div>
</ul>
</fieldset>
无论我点击什么按钮,只有最后一个实例被修改。想法?有什么建议吗?
【问题讨论】:
标签: javascript mvvm knockout.js underscore.js viewmodel