我必须在动态attr绑定生成控件ID之后调用viewmodel方法。
以下是我的HTML代码
class func getDateFor(forOption: Int) -> String {
let unit : NSCalendarUnit = [.WeekOfYear, .Month, .Year][forOption]
let calendar = NSCalendar.currentCalendar()
let date = calendar.dateByAddingUnit(unit, value: -1, toDate: NSDate(), options: NSCalendarOptions.WrapComponents)
let formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
var returnDate = formatter.stringFromDate(date!)
returnDate = returnDate.stringByReplacingOccurrencesOfString(":", withString: "%3A")
return returnDate
}
一旦生成了控件ID,我想调用一个方法,使用$(id)选择器进行一些工作。
为div生成id后,如何调用viewmodel方法?
答案 0 :(得分:1)
一般规则是:
每当你想触摸DOM时,
@"C:\MyCompanyName\Services\MyFiles"
或event
绑定来完成。可以使用click
或value
绑定将值链接到您的viewmodel。可以使用textInput
。某些默认绑定具有css
选项,您可以在其中指定一个回调方法,该方法将传递已应用绑定的元素(例如,afterRender
绑定)。但是,这些方法旨在用于动画/过渡;不推荐更改DOM。
使用foreach
方法的自定义绑定示例:
init
使用HTML:
ko.bindingHandlers.logIDAfterBind = {
init: function(element) {
console.log(element.id);
}
};
在评论中对问题进行编辑:
如何将常量传递给我的自定义绑定处理程序?
<div data-bind="attr: {id: 'bookScreen_' + bookId }, logIDAfterBind"></div>
方法的签名实际上比我在简化示例中显示的更加通用。您可以使用init
将值(实际上任何有效的javascript)传递给绑定。例如:
bindingKey: bindingValue
此值包含在函数中,可通过<div data-bind="attr: {id: 'bookScreen_' + bookId }, logIDAfterBind: 'a_constant_string'"></div>
:
init
在支持可观察值和其他值的绑定中,您经常会看到init: function(element, valueAccessor) {
var myConstant = valueAccessor(); // Will be "a_constant_string"
}
被使用。
ko.unwrap