2014-10-28 108 views
0

我正在創建一個新的應用程序與淘汰賽,我有一個非常奇怪的錯誤。我使用了一段時間的淘汰賽,之前從未有過這個錯誤。敲除意外標識符「。」

每當我嘗試使用「$ 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

回答

1

我知道這是一箇舊帖子,但我有同樣的問題,並找到了解決方案。

由於PHP模板將$視爲PHP變量,所以您只需將$代替爲其代碼&#36;的等效代碼即可。

因此,而不是使用

$parent 
$root 

使用

&#36;parent 
&#36;root 
1

我懷疑這是因爲在某處你的HTML你重新分配爲$根上下文對象的值。檢查您的HTML使用一個等於而不是一個雙等於三重綁定 -

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

如果不是這種情況,您可以發佈您的HTML?

+0

不是這種情況。我嘗試了「$ parent」,問題是一樣的。這個點擊綁定是我的代碼中的第二個綁定。 (第一個是「data-bind =」visible:true「」。 – 2014-10-28 10:20:15

1

我發現問題 - 我使用的是PHP模板系統,當它發現一個「$」字符時,它假定這是一個PHP變量。