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);