Javascript 访问ko.computed内部的本地函数

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

为什么这行代码不起作用

我使用durandal/knockout,我有一个这样的结构

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