Javascript 访问ko.computed内部的本地函数
为什么这行代码不起作用 我使用durandal/knockout,我有一个这样的结构Javascript 访问ko.computed内部的本地函数,javascript,jquery,knockout.js,requirejs,durandal,Javascript,Jquery,Knockout.js,Requirejs,Durandal,为什么这行代码不起作用 我使用durandal/knockout,我有一个这样的结构 define(function () { var vm = function() { compute: ko.computed(function() { return _compute(1); // fail }); var _compute= function(e) { return e; } } return vm
define(function () {
var vm = function() {
compute: ko.computed(function() {
return _compute(1); // fail
});
var _compute= function(e) {
return e;
}
}
return vm;
});
基本上我只是尝试访问私有方法\u compute-但是KO.compute不允许这样做
即使我把它公之于众,我仍然无法访问它。
我试图实现这一点,但仍然没有运气
var vm = function() {
compute: ko.computed(function() {
return this._compute(1); // still failing
});
this._compute= function(e) {
return e;
}
}
更新:到目前为止,只有这一个有效
define(function () {
var vm = function() {
var self = this;
var self._compute= function(e) {
return e;
}
compute: ko.computed(function() {
return this._compute(1); // works
}, self);
}
但就像我说的,_compute不应该暴露
更新:实际上这是另一个错误
这个现在可以用了
定义(函数(){
基本上,只需要在ko.computed prop之前声明私有函数
谢谢
附加说明:
为什么它需要在计算函数之前声明?我更喜欢我的所有“属性”在第一行,而函数在底部。我认为它更整洁。此语法在函数中不创建属性:
compute: ko.computed(function() {
return _compute(1); // fail
});
您必须使用=
而不是:
试试这个
var vm = function() {
var self = this;
var _compute = function(e) {
return e;
}
this.compute = ko.computed(function() {
return _compute(1);
});
}
还要注意,这不是您应该如何使用计算的
可观察对象。它应该包含对其他可观察对象的调用!发件人: 如果你的名字是可观察的,名字是另一个呢 lastName,您想显示全名吗?这就是计算的位置 可观测值进来-这些函数依赖于一个或多个变量 更多的其他观察值,并将在以下任何情况下自动更新 这些依赖关系会发生变化
在函数中,此语法不会创建属性:
compute: ko.computed(function() {
return _compute(1); // fail
});
您必须使用=
而不是:
试试这个
var vm = function() {
var self = this;
var _compute = function(e) {
return e;
}
this.compute = ko.computed(function() {
return _compute(1);
});
}
还要注意,这不是您应该如何使用计算的
可观察对象。它应该包含对其他可观察对象的调用!发件人: 如果你的名字是可观察的,名字是另一个呢 lastName,您想显示全名吗?这就是计算的位置 可观测值进来-这些函数依赖于一个或多个变量 更多的其他观察值,并将在以下任何情况下自动更新 这些依赖关系会发生变化
在函数中,此语法不会创建属性:
compute: ko.computed(function() {
return _compute(1); // fail
});
您必须使用=
而不是:
试试这个
var vm = function() {
var self = this;
var _compute = function(e) {
return e;
}
this.compute = ko.computed(function() {
return _compute(1);
});
}
还要注意,这不是您应该如何使用计算的
可观察对象。它应该包含对其他可观察对象的调用!发件人: 如果你的名字是可观察的,名字是另一个呢 lastName,您想显示全名吗?这就是计算的位置 可观测值进来-这些函数依赖于一个或多个变量 更多的其他观察值,并将在以下任何情况下自动更新 这些依赖关系会发生变化
在函数中,此语法不会创建属性:
compute: ko.computed(function() {
return _compute(1); // fail
});
您必须使用=
而不是:
试试这个
var vm = function() {
var self = this;
var _compute = function(e) {
return e;
}
this.compute = ko.computed(function() {
return _compute(1);
});
}
还要注意,这不是您应该如何使用计算的
可观察对象。它应该包含对其他可观察对象的调用!发件人: 如果你的名字是可观察的,名字是另一个呢 lastName,您想显示全名吗?这就是计算的位置 可观测值进来-这些函数依赖于一个或多个变量 更多的其他观察值,并将在以下任何情况下自动更新 这些依赖关系会发生变化
理想情况下,我希望_compute也是私有的!似乎您必须将_compute放在this.compute之前!语法有效。Javascript有标签:)没有理由向世界公开
\u compute
。只需定义一个函数_compute(){}
在构造函数中,它将只对计算函数可用。是的!实际上这是另一个错误,但已经修复了它,您的解决方案现在可以工作了!谢谢!理想情况下,我希望_compute也是私有的!似乎您必须将_compute放在this.compute之前!语法有效。Javascript有标签:)没有理由打开以向世界公开\u compute
。只需定义一个函数\u compute(){}
在构造函数中,它将只对计算函数可用。是的!实际上这是另一个错误,但已经修复了它,您的解决方案现在可以工作了!谢谢!理想情况下,我希望_compute也是私有的!似乎您必须将_compute放在this.compute之前!语法有效。Javascript有标签:)没有理由打开以向世界公开\u compute
。只需定义一个函数\u compute(){}
在构造函数中,它将只对计算函数可用。是的!实际上这是另一个错误,但已经修复了它,您的解决方案现在可以工作了!谢谢!理想情况下,我希望_compute也是私有的!似乎您必须将_compute放在this.compute之前!语法有效。Javascript有标签:)没有理由开始向世界公开\u compute
。只需在构造函数中定义一个函数\u compute(){}
,它将仅对计算函数可用。是的!实际上这是另一个错误,但已经修复了,您的解决方案现在可以工作了!谢谢!您可以提供JSFIDLE演示吗?compute:ko.computed(function()){
您正在定义一个标签,可以提供JSFIDLE演示吗?compute:ko.computed(function(){
您正在定义一个标签,可以提供JSFIDLE演示吗?compute:ko.computed(function(){
您正在定义一个标签,可以提供JSFIDLE演示吗?compute:ko.computed(function()){
您正在定义一个标签LOL