簡體   English   中英

剔除意外標識符“。”

[英]Knockout unexpected identifier “.”

我正在使用淘汰賽創建一個新應用,並且出現了一個非常奇怪的錯誤。 我使用淘汰賽已有一段時間,以前從未遇到過此錯誤。

每當我嘗試使用“ $ root”時。 偽選擇器,敲除返回我:

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綁定中引用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);
            })

我懷疑這是因為在html的某處您正在為$ root重新分配上下文對象的值。 使用單等號而不是雙或三等號來檢查HTML中的綁定-

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

如果不是這種情況,您可以發布HTML嗎?

我發現了問題-我使用的是php模板系統,當它找到“ $”字符時,就假定這是一個PHP變量。

我知道這是一篇舊文章,但是我遇到了同樣的問題並找到了解決方案。

由於PHP模板將$視為PHP變量,因此您所需要做的就是用$替換其html代碼&#36; 當量。

所以不要使用

$parent
$root

采用

&#36;parent
&#36;root

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM