我有一个KnockoutJs使用的JavaScript对象文字,而且从函数内部我无法获得我需要的属性。
有没有办法在不改变文字的情况下到达那里:
var vm = function () {
var self = this;
function remove(item) {
self.myArray.remove(item)
};
}
这是我目前的JavaScript:
var vm = {
myArray: ko.observableArray([]),
remove: function (item) {
//debugger; Cant get to myArray
//this is the item of the array
myArray.remove(item);
} // .bind(this) doesn't work
}
和HTML:
<!-- ko foreach: myArray-->
<button type="button" data-bind="click: $parent.remove, uniqueName: true" >Remove</button>
...
<!-- /ko -->
答案 0 :(得分:0)
解决这个问题的两种方法(我个人更喜欢第一种)
声明删除
时绑定该功能var vm = {
myArray: ko.observableArray();
}
vm.remove = function(item) {
this.myArray.remove(item);
}.bind(vm);
<button data-bind="click: $parent.remove">
或者绑定数据绑定表达式上的函数
var vm = {
myArray: ko.observableArray(),
remove = function(item) {
this.myArray.remove(item);
}
}
<button data-bind="click: $parent.remove.bind($parent)">
答案 1 :(得分:0)
使用对象文字语法时,您只需使用存储对象的变量。
var vm = {
myArray: ko.observableArray([]),
remove: function (item) {
vm.myArray.remove(item);
}
}