如何从函数内部访问属性?

时间:2014-02-25 23:23:48

标签: javascript knockout.js

我有一个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 -->

2 个答案:

答案 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);
    }
}