我在PactiveJS中使用Pikaday日期选择器作为装饰器,并且想要在装饰器外部访问datepicker的api,但是将它添加到返回对象似乎不起作用。有人可以指出我正确的方向。
答案 0 :(得分:4)
装饰器被设计成Ractive和外部库之间的可重用桥梁 - 所以不是拥有startdate
装饰器和enddate
装饰器,最好有一个pikaday
装饰器。< / p>
然后,装饰器函数负责管理自己的状态并与Ractive实例进行交互。如果你发现自己试图获得装饰器创建的对象的引用(即Pikaday实例),那么它通常是一个红旗。
这是你可以做到的一种方式:http://jsbin.com/susev/5/edit?html,js,output
在这个例子中,我们将一个keypath传递给装饰器的两个实例。当使用每个pikadayDecorator
节点调用<input>
函数时,将使用两个参数调用它 - 节点和keypath。 (你可以有其他参数 - 只用逗号分隔它们。)
装饰者然后可以设置双向绑定 - 它观察给定的密钥路径(例如startdate
或enddate
)并调用Pikaday实例的setDate()
变化时的方法。当选定的日期发生变化时,我们还使用onSelect()
方法更新Ractive的模型 - 这意味着我们可以在模板的其他位置使用日期,甚至可以在Ractive实例之外使用:
ractive.observe('startdate', function (newDate) {
// This may have been as a result of a `ractive.set()`, or
// because the user interacted with the datepicker
console.log('startdate changed to', newDate);
});
(请注意,Pikaday会自动将“2015-01-01”等字符串转换为日期对象。)
答案 1 :(得分:0)
您需要在saleEndDecorator函数中调用setDate
。