UNPKG

can

Version:

MIT-licensed, client-side, JavaScript framework that makes building rich web applications easy.

37 lines (36 loc) 1.17 kB
/*! * CanJS - 2.3.34 * http://canjs.com/ * Copyright (c) 2018 Bitovi * Mon, 30 Apr 2018 20:56:51 GMT * Licensed MIT */ /*can@2.3.34#view/href/href*/ define([ 'can/util/library', 'can/view/expression', 'can/view/callbacks', 'can/view/scope' ], function (can, expression) { var removeCurly = function (value) { if (value[0] === '{' && value[value.length - 1] === '}') { return value.substr(1, value.length - 2); } return value; }; can.view.attr('can-href', function (el, attrData) { var attrInfo = expression.parse('tmp(' + removeCurly(el.getAttribute('can-href')) + ')', { baseMethodType: 'Call' }); var getHash = attrInfo.argExprs[0].value(attrData.scope, null); var routeHref = can.compute(function () { return can.route.url(getHash()); }); el.setAttribute('href', routeHref()); var handler = function (ev, newVal) { el.setAttribute('href', newVal); }; routeHref.bind('change', handler); can.bind.call(el, 'removed', function () { routeHref.unbind('change', handler); }); }); });