2014-10-28 2 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> 

То же самое произошло, когда я пытался сослаться на функцию ViewModel внутри Еогеасп связывания.

Вот мой код:

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

Какой тип веб-сервер/хостинг провайдера/обратный прокси-сервер вы используете? Из сообщения об ошибке кажется, что что-то удалило текст '$ root' из вашего HTML ... – nemesv

+0

Я использую localhost. Я думал, что это может быть некоторая проблема с кодировкой, но, похоже, не –

+0

Действительно, в HTML, $ root не существует. Я использую PHP –

ответ

1

Я знаю, что это старый пост, но у меня была та же проблема и нашел решение.

Поскольку PHP шаблонных лечит $ как переменную PHP все, что вам нужно сделать, это замени $ для его HTML код &#36; эквивалента.

Таким образом, вместо того, чтобы использовать

$parent 
$root 

использование

&#36;parent 
&#36;root 
1

Я подозреваю, что это потому, что где-то в HTML вы переназначение значения объекта контекста для $ корня. Проверьте HTML для привязки с использованием одного равно вместо двойной или тройной равных -

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

Если это не так, вы можете разместить свой HTML?

+0

, не так. Я пробовал с «$ parent», и проблема такая же. И это привязка привязки является второй привязкой в ​​моем коде. (первым является «data-bind =» visible: true ». –

1

Я нашел проблему - я использую систему php templating, и когда он находит символ «$», он предполагает, что это переменная PHP.

Смежные вопросы