Javascript 在加载脚本后重新计算绑定

Javascript 在加载脚本后重新计算绑定,javascript,polymer,web-component,polymer-1.0,Javascript,Polymer,Web Component,Polymer 1.0,我正在创建一个利用moment.js的聚合web组件。我创建了一个计算绑定,它接受一个日期并返回一个由moment.js格式化的字符串。问题是,有时此方法在应用程序加载矩.js库之前运行,导致变量未定义错误。是否有一种方法可以等待向视图返回值,或者在调用计算函数时延迟 请参见下面的代码示例: <span>{{computedDate(date)}}</span> <script> Polymer({ ... comput

我正在创建一个利用moment.js的聚合web组件。我创建了一个计算绑定,它接受一个日期并返回一个由moment.js格式化的字符串。问题是,有时此方法在应用程序加载矩.js库之前运行,导致变量未定义错误。是否有一种方法可以等待向视图返回值,或者在调用计算函数时延迟

请参见下面的代码示例:

<span>{{computedDate(date)}}</span>
<script>
    Polymer({
        ...
        computedDate: function(date) {
            return moment(date, "MM-DD-YYYY").fromNow()
        }
    })
</script>
{{computedDate(日期)}
聚合物({
...
computedDate:函数(日期){
返回时刻(日期,“MM-DD-YYYY”)。从现在开始()
}
})

如果您想确定moment.js是否已加载,可以动态加载并等待加载事件触发:

var script = document.createElement('script');
script.src = path/to/moment.js;
script.onload = function () {
  //here you know moment.js is loaded, so set the loaded "flag" to true
};

document.head.appendChild(script);
然后,在您的计算绑定中,仅在其为真时使用“时刻”来监视对已加载标志的更改:

<span>{{computedDate(date, loaded)}}</span>
{{computedDate(date,loaded)}

您的问题似乎与我的问题相似,甚至提出了解决方案:。虽然我还没有尝试过,但他们看起来很明智。这将导致每次将此web组件添加到DOM中时都会添加脚本否?这取决于您如何使用它。例如,您可以使用if语句包装动态脚本加载,该语句检查“矩”对象是否已经可用&如果已经可用,则不要重新添加它的脚本标记。