首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只有在同一个文件中定义的两个指令中的一个可以看到moment.js。

只有在同一个文件中定义的两个指令中的一个可以看到moment.js。
EN

Stack Overflow用户
提问于 2017-09-04 11:20:33
回答 1查看 30关注 0票数 0

同一个文件中有两个指令,这两个指令都依赖于moment.js库。当应用时,第一个指令(momentNow)看到函数,而另一个没有(值是未定义的)。

两个指令都在同一个模板中使用:

模板

代码语言:javascript
复制
<datepicker date-format="yyyy-MM-dd">
    <!-- works correctly -->
    <input required ng-model="vm.dateFrom" moment-now />
</datepicker>

<datepicker date-format="yyyy-MM-dd">
    <!-- throws error -->
    <input required ng-model="vm.dateTo" moment-then />
</datepicker>

模块

代码语言:javascript
复制
;(function() {

    "use strict";

    angular.module('dateUtils', [])
        .directive('momentNow', momentNow)
        .directive('momentThen', momentThen);

    function momentNow() {
        return {
            /* params are omitted */
            link: function(scope, element, attrs, ngModel) {

                console.log(moment);

                var value = moment().format(scope.momentFormat || 'YYYY-MM-DD');
                ngModel.$setViewValue(value);
                ngModel.$render();
            }
        }
    };

    function momentThen() {
        return {
            /* params are omitted */
            link: function(scope, element, attrs, ngModel) {

                console.log(moment);

                var moment = moment();
                var format = scope.momentFormat || 'YYYY-MM-DD';
                var value = (moment.hours() >= 20 ? moment.add('days', 1) : moment).format(format);

                ngModel.$setViewValue(value);
                ngModel.$render();

            }
        }
    };

}());
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-04 11:54:10

在这一行重命名变量:

代码语言:javascript
复制
var moment = moment();

你是影影时刻与你的变量。

如果您想知道为什么console.log(moment);会显示undefined,请看一看吊装是什么。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46035930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档