Javascript 嵌套绑定上下文不需要$parent就可以访问
我刚刚开始使用knockout.js开发一个地图应用程序。我有些了解绑定上下文是如何工作的,但我不理解Javascript 嵌套绑定上下文不需要$parent就可以访问,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我刚刚开始使用knockout.js开发一个地图应用程序。我有些了解绑定上下文是如何工作的,但我不理解showCoord 无需$parent即可访问函数。这是密码 var-mapplication=function(){ //成员函数 self=这个; var映射; self.locations=ko.array([ {名称:'博物馆',合作伙伴:{lat:-37.669012,lng:144.841027}, {名称:'Ariport',合作伙伴:{lat:-37.669012,lng:14
showCoord
无需$parent
即可访问函数。这是密码
var-mapplication=function(){
//成员函数
self=这个;
var映射;
self.locations=ko.array([
{名称:'博物馆',合作伙伴:{lat:-37.669012,lng:144.841027},
{名称:'Ariport',合作伙伴:{lat:-37.669012,lng:144.841027}}
]);
self.showCoord=函数(obj){
控制台日志(obj.coord);
}
var init=函数(){
ko.应用绑定(MapApplication);
};
美元(初始);
}();代码>
尝试使用$parent
看看会发生什么
实际上,请尝试将ko.applyBindings(MapApplication)
更改为ko.applyBindings()
。它仍将以同样的方式工作
发生的情况是,locations
的行为类似于Window的子函数,并且它自己的父mapplication
无法识别。这是因为您尚未初始化MapApplication
,在创建之前无法对其进行初始化
奖励-尝试如下修改代码:
self.showCoord = function(obj) {
console.log(obj.coord);
console.log(self);
}
并检查“self”的值
正确的绑定方式如下:
var-mapplication=function(){
//成员函数
self=这个;
var映射;
self.locations=ko.array([
{名称:'博物馆',合作伙伴:{lat:-37.669012,lng:144.841027},
{名称:'Ariport',合作伙伴:{lat:-37.669012,lng:144.841027}}
]);
self.showCoord=函数(obj){
控制台日志(obj.coord);
}
};
var init=函数(){
应用绑定(新的MapApplication());
};
美元(初始)代码>
尝试使用$parent
看看会发生什么
实际上,请尝试将ko.applyBindings(MapApplication)
更改为ko.applyBindings()
。它仍将以同样的方式工作
发生的情况是,locations
的行为类似于Window的子函数,并且它自己的父mapplication
无法识别。这是因为您尚未初始化MapApplication
,在创建之前无法对其进行初始化
奖励-尝试如下修改代码:
self.showCoord = function(obj) {
console.log(obj.coord);
console.log(self);
}
并检查“self”的值
正确的绑定方式如下:
var-mapplication=function(){
//成员函数
self=这个;
var映射;
self.locations=ko.array([
{名称:'博物馆',合作伙伴:{lat:-37.669012,lng:144.841027},
{名称:'Ariport',合作伙伴:{lat:-37.669012,lng:144.841027}}
]);
self.showCoord=函数(obj){
控制台日志(obj.coord);
}
};
var init=函数(){
应用绑定(新的MapApplication());
};
美元(初始)代码>
谢谢你的回答,雷。我知道正确的方法就是你建议的方法,但是我试着用模块模式和IIFE来组织代码。谢谢你的回答。我知道正确的方法应该是您建议的方法,但我尝试使用模块模式和IIFE组织代码。