【发布时间】:2015-04-14 13:32:56
【问题描述】:
我有一个自定义绑定,它已经实现了更新。
我想知道调用 update 之前的值是多少。我看不到它被传递到任何参数中。我错过了吗?
ko.bindingHandlers.ticker= {
update: function (element, valueAccessor, allBindingsAccessor) {
var toNumber = ko.utils.unwrapObservable(valueAccessor());
var fromNumber = 0; //<---- can i set this to the old value?
var counter = new Ticker(element, fromNumber, toNumber);
counter.start();
}
}
目前我正在从 0 计数到值(这只是在 UI 中进行动画处理),但我希望能够从旧值计数到新值,而不是将其重置为 0,然后从那里计数。
【问题讨论】:
-
我不相信它被传入了。也许您可以将它作为属性存储在元素上,这样下次
update运行时它仍然存在? -
应该没问题,因为您有 jQuery 类型的插件绑定处理程序之类的东西,可以更新
update上元素上的插件选项 -
另外,因为你在绑定中创建了一个新的
Ticker(),你实际上和ko.components对viewModel提供的函数所做的一样,但缺点是你之后无法访问 JS 属性。尽管这种方法是完全有效的,但对我来说,将 all 模型数据存储在 JS 中,而不是内部 DOM 属性,似乎更符合 MV* 模式。
标签: knockout.js custom-binding