javascript - Angular 解析错误 - token 是意外 token

标签 javascript angularjs

我创建了一个基本的指令来更新div内的时间:

myApp.directive('updateTime', function($timeout, $filter) {
    return function(scope, element, attrs) {
        var timeoutId;

        function updateTime() {
            element.text($filter('dateFromNow')(attrs.updateTime));$()
        }

        scope.$watch(attrs.updateTime, function(value) {
            updateTime();
        });

        function updateLater() {
            timeoutId = $timeout(function() {
                updateTime();
                updateLater();
            }, 5000);
        }

        element.bind('$destroy', function() {
            $timeout.cancel(timeoutId);
        });

        updateLater();
    }
});

我的模型包含一个日期对象,例如 2016-06-03T09:14:57.948Z,但 Angular 似乎提示它采用这种格式。这就是我的数据库(MongoDB)传递日期的方式。

Error: $parse:syntax
Syntax Error
Syntax Error: Token 'T09' is an unexpected token at column 11 of the expression [2016-06-03T09:14:57.948Z] starting at [T09:14:57.948Z].

如何解决此错误?

<强> WORKING EXAMPLE

编辑:

这是我的dateFromNow过滤器。它只是使用 MomentJS 将日期对象(或日期字符串)转换为 time ago 字符串(例如“2 分钟前”):

myApp.filter('dateFromNow', function () {
    return function (date, onlyFromNow) {
        return moment(date).fromNow();
    }
});

在我的控制台中,我可以看到错误发生在指令内的 scope.$watch(.... 内。

最佳答案

scope.$watch 抛出错误,因为您正在传递实际值 (2016-06-03T09:14:57.948Z),而它需要知道以下名称(或路径)变量。

您可以通过一些修改来修复它。

使用您的指令,如下所示:

<div update-time="myTime">

通过解析获取updateTime()中的属性值:

 $parse(attrs.updateTime)(scope)

这需要将 $parse 服务注入(inject)到您的指令中:

.directive('updateTime', function($timeout, $filter, $parse) {
    // ...
})

这是一个工作示例: http://codepen.io/LukaszWiktor/pen/BzNLOM

关于javascript - Angular 解析错误 - token 是意外 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37610646/

相关文章:

javascript - 如何保存两个嵌套属性的 id?

javascript - 重命名数组 JavaScript 中的重复项

javascript - Angularjs 有条件地编辑模型

javascript - 外部元素在外部 ng-repeat 中访问数据

javascript - AngularJS $watch 变量并重新评估 ng-class 表达式

javascript - 无法使用 Angular.js 显示错误消息

javascript - JSON对象到字符串的转换问题

javascript - 开发运营 REST API : can not update work item status using PATCH method

javascript - Rails & Zurb Modal 在编辑时加载整个页面

javascript - 根据外部 ng-repeat 的索引过滤内部 ng-repeat