敲除意外标识符“。”
问题描述:
我正在创建一个新的应用程序与淘汰赛,我有一个非常奇怪的错误。我使用了一段时间的淘汰赛,之前从未有过这个错误。敲除意外标识符“。”
每当我尝试使用“$ 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);
})
答
我知道这是一个旧帖子,但我有同样的问题,并找到了解决方案。
由于PHP模板将$
视为PHP变量,所以您只需将$
代替为其代码$
的等效代码即可。
因此,而不是使用
$parent
$root
使用
$parent
$root
答
我怀疑这是因为在某处你的HTML你重新分配为$根上下文对象的值。检查您的HTML使用一个等于而不是一个双等于三重绑定 -
<div data-bind="visible: $root=''"></div>
如果不是这种情况,您可以发布您的HTML?
+0
不是这种情况。我尝试了“$ parent”,问题是一样的。这个点击绑定是我的代码中的第二个绑定。 (第一个是“data-bind =”visible:true“”。 – 2014-10-28 10:20:15
答
我发现问题 - 我使用的是PHP模板系统,当它发现一个“$”字符时,它假定这是一个PHP变量。
哪些类型的网络服务器/托管服务提供商/反转您使用代理?从错误消息看来,东西从您的HTML中删除了'$ root'文本... – nemesv 2014-10-28 06:39:41
我正在使用本地主机。我认为这可能是一些编码问题,但似乎并不是 – 2014-10-28 10:16:35
的确,在HTML中,$ root不在那里。我使用PHP – 2014-10-28 10:26:40