A general rule I follow when using KnockoutJS is that there should be no DOM manipulation in the viewModel. The viewModel should be completely independent of any markup, while any changes to the DOM (via jQuery or otherwise) should be handled in the binding handler. This makes your viewModels much more portable and testable. As […]
KnockoutJS: multiple jquery actions in one binding handler
5th August, 2016 - Posted by david
Passing options to Reveal modal in Foundation via HTML
18th March, 2016 - Posted by david
In my current job, we use Foundation for stuff like modal popups, fancy drop downs etc. I haven’t used it too much but I know for the modal dialogs you can either instantiate them via Javascript ($(‘#elem’).foundation(‘reveal’, ‘open’, {option: ‘value’});) or via HTML attributes (<a href=”#” data-reveal-id=”elem”>Open</a> and <div id=”elem” data-reveal>). Passing options to Foundation […]
Autocomplete with KnockoutJS
3rd February, 2016 - Posted by david
Recently I started a new job at a company that is looking to transition away from a customised, unstructured, jQuery module set up to use KnockoutJS and RequireJS for it’s modules. This approach was chosen because the core platform is based on Magento and the forthcoming Megento 2 uses KnockoutJS heavily throughout it’s frontend templates. […]
How to call some Pixastic functions
21st February, 2015 - Posted by david
I was doing a bit of work with Canvas recently, manipulating images in the browser and writing the results out to files. I was looking for a package that could do various effects on the images, such as sharpen, blur etc. and came across the Pixastic package used in similar applications. However, unfortunately, the website […]
Homepage takeover with existing skyscraper ads
14th February, 2015 - Posted by david
UPDATE: Originally I was using Javascript to position the 2 banner divs along the main content, but have since figured out how to do this with just CSS alone. I’ve left the article as it was for posterity; there should be enough here to still figure out what you need to do! Anyways, to achieve […]
Backbone JS Models and Collections in same file with RequireJS
31st January, 2015 - Posted by david
In BackboneJS, classes/objects are called Models and groups of these models go into Collections. Using RequireJS, you define something and return that something for use in other files. In many BackboneJS examples, I’ve seen say a Person Model and a Person Collection stored in separate files, with each one being imported separately to the script […]
Extending Google Maps class with RequireJS and Underscore
24th January, 2015 - Posted by david
I’ve been working alot with RequireJS lately and love the whole modular JS movement, where blocks of code are safely contained within separate functions, that can be loaded in when necessary, without worrying about variable/function name clashes. Generally each module is stored in it’s own file but you can combine several modules into one giant […]
Safari and long lines in Google Maps Javascript API Directions Service
11th October, 2012 - Posted by david
I’ve been working on building the mobile version of CarsIreland.ie lately and one of the features we want is to offer directions from a user’s current location to any of our car dealerships, assuming we have their latitude and longitude co-ordinates. Getting the directions and displaying them on a map are ridiculously simple, thanks to […]
window.onload firing too early in IE
12th May, 2012 - Posted by david
The Problem Where I work, our tool supports 6 different languages, where translations are contained in various sets of language files. One of these sets consists of the translations stored in Javascript files as JSON blocks
Google Maps Zoom Control missing in Internet Explorer (IE): a solution
23rd February, 2011 - Posted by david
When I was working on rebuilding daft.ie’s mapping system for the modern web, it involved writing alot of Javascript (JS) code and loading this via a couple of JS source files, one external one from Google (i.e. the core Google Maps JS) and another from our own web-servers. It all worked fine in most browsers, […]