敲除意外标识符“。”

问题描述:

我正在创建一个新的应用程序与淘汰赛,我有一个非常奇怪的错误。我使用了一段时间的淘汰赛,之前从未有过这个错误。敲除意外标识符“。”

每当我尝试使用“$ root”。 pseudoselector,淘汰赛返回我:

Uncaught SyntaxError: Unable to parse bindings. 
Bindings value: click: .createAlarm 
Message: Unexpected token . 

在这种情况下,绑定是:

<button class='btn' data-bind='click: $root.createAlarm'>New alarm</button> 

同样的事情发生了,当我试图引用一个foreach结合内部的视图模型的功能。

这里是我的代码:

function ViewModel() { 
       var self = this; 
       // data 
       // set initial time for alarm 
       self.alarmHour = ko.observable(moment().hours()); 
       self.alarmMinute = ko.observable(moment().minutes()); 
       self.alarmSecond = ko.observable(moment().seconds()); 
       self.chosenAlarmTrack = ko.observable(); 
       self.alarms = ko.observableArray(); 

       // methods 

       self.createAlarm = function() { 
        var timeNow = moment() 
        var alarmTime = getNewTime(self.alarmHour(), self.alarmMinute(), self.alarmSecond()); 
        var alarmTime = moment(alarmTime) 

        if (timeNow.isAfter(alarmTime)) { 
         alarmTime.add(1, "day"); 
        } 

        self.alarms.push(new Alarm(alarmTime, self.chosenAlarmTrack())) 
       } 


      } 

      $(document).ready(function() { 
       var vm = new ViewModel(); 
       ko.applyBindings(vm); 
      }) 
+0

哪些类型的网络服务器/托管服务提供商/反转您使用代理?从错误消息看来,东西从您的HTML中删除了'$ root'文本... – nemesv 2014-10-28 06:39:41

+0

我正在使用本地主机。我认为这可能是一些编码问题,但似乎并不是 – 2014-10-28 10:16:35

+0

的确,在HTML中,$ root不在那里。我使用PHP – 2014-10-28 10:26:40

我知道这是一个旧帖子,但我有同样的问题,并找到了解决方案。

由于PHP模板将$视为PHP变量,所以您只需将$代替为其代码&#36;的等效代码即可。

因此,而不是使用

$parent 
$root 

使用

&#36;parent 
&#36;root 

我怀疑这是因为在某处你的HTML你重新分配为$根上下文对象的值。检查您的HTML使用一个等于而不是一个双等于三重绑定 -

<div data-bind="visible: $root=''"></div> 

如果不是这种情况,您可以发布您的HTML?

+0

不是这种情况。我尝试了“$ parent”,问题是一样的。这个点击绑定是我的代码中的第二个绑定。 (第一个是“data-bind =”visible:true“”。 – 2014-10-28 10:20:15

我发现问题 - 我使用的是PHP模板系统,当它发现一个“$”字符时,它假定这是一个PHP变量。