淘汰赛脚本没有打applyBindings

问题描述:

我有一个相当简单的屏幕,利用淘汰赛脚本。我有一个很奇怪的问题。淘汰赛脚本没有打applyBindings

我设置了QA/Staging/Production环境,并且我的屏幕在本地和我的QA环境中加载并完美运行。但是,当我将我的脚本和页面迁移到我的Staging服务器时,Knockout不会击中ko.applyBinding(vm)代码。它在我的QA服务器上执行。我正在使用Chrome调试器工具在此处对其进行验证。

这里是我的代码,少一些功能...

$(document).ready(function() { 
vm = new function() { 

     var thisVm = this; 

     this.lastName = ko.observable(), 
     this.firstName = ko.observable(), 
     this.dob = ko.observable(), 
     this.cityList = ko.observable([]) 

     //Load the CityList 
     this.loadCityList = function (callback) { 
      var data = {}; 
      new ajaxJsonHelper().invoke("ServiceDelivery.aspx/GetCityList", data, vm.loadCityListCallback, showAjaxFailure, false); 
     } 

     this.loadCityListCallback = function (result) { 
      if (result.d != null) { 
       vm.cityList(result.d); 
      } 
     } 
    } 
    ko.applyBindings(vm); 
}); 
+0

你已经排除了任何基础设施相关的问题,比如你的生产环境可能具有的缓存旧文件的代理服务器?或者您是否在机器上完整的浏览器缓存清理/刷新之后尝试使用它? –

+0

我已经清除了服务器和客户机上的所有缓存。我可以看到那里的文件是正确的,并且所有的功能都被打了,它从来没有打过applyBindings。这是我见过的最奇怪的事情。 – Matt

+0

我道歉,当我说“...迁移到我的生产服务器”我的意思是阶段。我编辑了我原来的帖子以反映这一点。 – Matt

我相信有在玩几件事情在这里。我创建了一个JSFiddle来演示工作的概念。

注意:为清楚起见,我删除了内部代码。

var vm = function() { 
    var thisVm = this; 

    console.log("inside view model"); 
}; 

$(document).ready(function() {  
    ko.applyBindings(new vm()); 
});