首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用对象原型定义函数时,无法修改ko观察值

使用对象原型定义函数时,无法修改ko观察值
EN

Stack Overflow用户
提问于 2015-08-31 07:53:26
回答 1查看 34关注 0票数 0

我知道在使用knockout时使用object.prototype.whatever语法修改原型通常是不好的做法,但我正在尝试理解为什么这根本不起作用:

代码语言:javascript
复制
var Foo = function() {
        var self = this;
        self.bar = ko.observable("bar");
    };
    Foo.prototype.capitalizer = function() {
        self.bar("Bar");
    };
    var vm = function() { 
        var self = this;
        self.whatever = new Foo();
    };

js小提琴在这里:http://jsfiddle.net/vvdo7z70/8/

当它按预期工作时:

代码语言:javascript
复制
var Foo = function() {
        var self = this;
        self.bar = ko.observable("bar");
        self.capitalizer = function() {
            self.bar("Bar");
        }
    };
    var vm = function() { 
        var self = this;
        self.whatever = new Foo();
    };

js小提琴在这里:http://jsfiddle.net/vvdo7z70/10/

用object.prototype语法传递相关的ko绑定是不可能的吗?还是有别的办法呢?

EN

回答 1

Stack Overflow用户

发布于 2015-08-31 09:08:11

首先,Foo.prototype.capitalizer中没有定义self。一旦解决了这个问题,您需要注意绑定click: whatever.capitalizer使用的是函数,而不是方法,也就是说,没有提供whatever上下文。取而代之的是,提供vm作为上下文。这将会起作用:

代码语言:javascript
复制
Foo.prototype.capitalizer = function () {
    this.whatever.bar("Bar");
};

代码语言:javascript
复制
click: whatever.capitalizer.bind(whatever)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32302329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档