获取打字稿中绑定knockoutjs的正确上下文

时间:2014-02-03 14:28:39

标签: knockout.js typescript

我正在尝试使用KnockoutJS和Typescript但遇到问题是在我的点击绑定this中为clickMe(类Test)获取正确的上下文。

我提出了两种方法,第一种方法是使用Test在我的Test.prototype.LoadNextWinner课程中调用一个函数...

 module Swagolicious {

     export class Test {

         constructor() {
             this.WireUp();
         }

         private WireUp() {
             var instance = new this.ViewModel();
             ko.applyBindings(instance);
         }

        private ViewModel = function() {
            var vm = this;
            vm.clickMe = () => {
                //This is one way to call function LoadNextWinner
                Test.prototype.LoadNextWinner(vm);
            };
         }

         private LoadNextWinner(vm) {
             console.log("clicked");
             console.log(vm);
         }
     }
 }


 $(() => {
     var test = new Swagolicious.Test();
 });

或者第二种方式是我可以将当​​前上下文this作为参数发送到视图模型中。例如var instance = new this.ViewModel(this);

 module Swagolicious {

     export class Test {

         constructor() {
             this.WireUp();
         }

         private WireUp() {
             //or I can send this into the ViewModel
             var instance = new this.ViewModel(this);
             ko.applyBindings(instance);
         }

        private ViewModel = function(instance) {
            var vm = this;
            vm.clickMe = () => {
                //This is another way to call function LoadNextWinner
                instance.LoadNextWinner(vm);
            };
         }

         private LoadNextWinner(vm) {
             console.log("clicked");
             console.log(vm);
         }
     }
 }


 $(() => {
     var test = new Swagolicious.Test();
 });

然而,这两种方式对我来说似乎有点脏,第一种方式是直接用protoype调用函数,第二种方式(YUK)我将this作为上下文发送到视图模型中。

我的按钮很简单: -

<button data-bind="click : clickMe">Click me</button>

我已经尝试了获取TEST的类上下文的所有不同方法,但到目前为止还没有这样做。我还有其他选择吗?

0 个答案:

没有答案