我在Polymer中定义了一个datetime picker元素,如下所示:
# CoffeeScript
Polymer
is: "date-picker"
properties:
# External getter/setter string interface
startTime:
type: String
notify: true
# Internal representation
_startTime:
type: Object
notify: true
内部表示是因为我想维护一个代表startTime
的Moment.js对象。我希望_startTime
在从外部来源设置为startTime
时进行更新,并在startTime
更改时更新_startTime
。有没有办法在不创建无限循环的情况下执行此操作?例如,使用Backbone.js,我可以通过将参数传递给非激活更新事件来实现此目的。
答案 0 :(得分:0)
在有用的Polymer Slack通道上向我指出了答案。围绕标志包装更新以防止由更新事件引起的处理。
像这样:
# CoffeeScript
Polymer
is: "date-picker"
properties:
startTime:
type: String
notify: true
_startTime:
type: Object
notify: true
listen:
"startTime-changed": "onStartTimeChange"
"_startTime-changed": "onIntStartTimeChange"
onStartTimeChange: (e) ->
if not @_isProcessing
@_isProcessing = true
@set("_startTime", moment(e.detail.value))
@_isProcessing = false
onIntStartTimeChange: (e) ->
if not @_isProcessing
@_isProcessing = true
@set("startTime", e.detail.value.format())
@_isProcessing = false