访问ko.computed内部的局部函数
Access local function inside ko.computed
为什么这行代码不能工作
我使用durandal/knockout,我的结构是这样的
define(function () {
var vm = function() {
compute: ko.computed(function() {
return _compute(1); // fail
});
var _compute= function(e) {
return e;
}
}
return vm;
});
基本上我只是想访问私有方法_compute -但KO.compute不允许吗?
即使我把它公开,我仍然不能访问它。我试图实现揭示模式在这一点上,但仍然没有运气!
var vm = function() {
compute: ko.computed(function() {
return this._compute(1); // still failing
});
this._compute= function(e) {
return e;
}
}
update:到目前为止,只有这个有效
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不应该被暴露。
更新:实际上是另一个错误。
现在可以使用
定义函数(){
var vm = function() {
var self = this;
var _compute= function(e) {
return e;
}
compute: ko.computed(function() {
return _compute(1); // works
});
}
基本上,只需要在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);
});
}
还要注意,这不是你应该如何使用computed
观察对象。它应该包含对其他可观察对象的调用!
医生:
如果你有一个用于firstName的可观察对象,还有一个用于lastName,而您想要显示全名?这就是计算的地方这些是依赖于一个或的函数更多的其他可观察对象,并且会在任何时候自动更新。
相关文章:
- Javascript用函数return替换局部变量
- 每次调用函数时,都要修改Javascript中的局部变量
- 变量只能在函数中局部工作,不能全局工作-Javascript
- 创建所有原型函数均可访问的局部变量
- JavaScript:在调用之前将函数重新分配给局部变量,而不是直接调用并对'这'
- 函数中的局部变量
- Jquery:如何获取变量的局部外部函数
- 局部变量仍可通过函数访问
- 调用与局部变量同名的函数
- 为局部嵌套函数中的全局变量设置值
- 尝试在 AngularJS 工厂中返回局部变量时如何避免函数表达式
- 以全局函数的方式调用局部函数
- 如何在构造函数中定义局部函数.Javascript中的原型
- Javascript中事件中引用的局部函数发生了什么
- 在Javascript函数(Ruby on rails)中使用onclick函数提取局部函数
- 在JavaScript中何时使用套用和局部函数
- 访问ko.computed内部的局部函数
- 局部函数声明应该放在&;return&;之前或之后
- 函数式编程和局部函数状态分配
- 将局部函数设置为全局函数