Javascript 对变量的敲除访问

Javascript 对变量的敲除访问,javascript,html,knockout.js,Javascript,Html,Knockout.js,我有一些属性的变量和函数 我正在尝试访问属性,但这给了我空变量。 我能做什么?例如: var exports = { city: ko.observable(), street: ko.observable().extend({ required: true, number:true}), back : function(){ console.log(this.city); }, HTML })) 我不确定您在哪里看到null值,但我猜

我有一些属性的变量和函数 我正在尝试访问属性,但这给了我空变量。 我能做什么?例如:

    var exports = {

    city: ko.observable(),
    street: ko.observable().extend({ required: true, number:true}),

    back : function(){
       console.log(this.city);
    },
HTML


}))

我不确定您在哪里看到
null
值,但我猜这可能是由于
这个.city
造成的。要访问可观察的值,您应该这样做

  back : function(){
 console.log(this.city()); 
},
注意城市末尾的
()
。还有一件事,人们之所以看到不相关的价值,另一个最常见的原因是他们在错误的范围内定义了
这个

您应该用这种方式调用这个
函数

<button data-bind="click: exports.back()" class="btn btn-default">Back</button>     
返回

除了缺少括号(正如其他人指出的那样),我认为这里没有问题。你能把你的完整代码贴出来吗

这一个正在工作:

<input type="text" data-bind="value: city" />
<button data-bind="click: back" class="btn btn-default">Back</button>  


var exports = {
    city: ko.observable('Los Angeles'),
    street: ko.observable().extend({
        required: true,
        number: true
    }),

    back: function (data) {
        console.log(data.city());      
        // or
        console.log(this.city());
        console.log(this.city);//incorrect
    }
};
ko.applyBindings(exports);

返回
var导出={
城市:ko.observable(“洛杉矶”),
街道:ko.observable().extend({
要求:正确,
数字:对
}),
返回:函数(数据){
console.log(data.city());
//或
console.log(this.city());
console.log(this.city);//不正确
}
};
ko.应用绑定(出口);

你得到了什么,请告诉我们这个案子的结果?在我的控制台上。但是我试过很多方法…我试过使用city(),但没有成功。也许porlbem在范围内,但我应该如何得到正确的答案?根据范围逻辑更新答案。适当地应用。我不能在导出中定义var self=this,如果我写self:this,那么self得到“窗口”的方式self是“窗口”是。那样做。你可以这样做
self=this;var a={b:ko.observable(12),c:function(){console.log(this.b())};a、 c()
我在问题中添加了完整的代码。它在JSFIDLE上看起来非常糟糕,因为使用了所有的字符串……那么您试图访问什么属性,从什么函数访问?你想做的事情的小提琴版本怎么样?看起来问题出在你的自动数字绑定处理程序上。如果将其替换为常规值bindingHandler,则“响应”按钮将起作用。
  back : function(){
 console.log(this.city()); 
},
<button data-bind="click: exports.back()" class="btn btn-default">Back</button>     
<input type="text" data-bind="value: city" />
<button data-bind="click: back" class="btn btn-default">Back</button>  


var exports = {
    city: ko.observable('Los Angeles'),
    street: ko.observable().extend({
        required: true,
        number: true
    }),

    back: function (data) {
        console.log(data.city());      
        // or
        console.log(this.city());
        console.log(this.city);//incorrect
    }
};
ko.applyBindings(exports);