-
Notifications
You must be signed in to change notification settings - Fork 0
util
@page Utilities Utility Functions @parent Tutorial 9
@body CanJS provides a plethora of utility methods. These methods are usually mapped to similar methods in the library that underlies CanJS, but for libraries that do not have the given methods, CanJS provides them for you. This way, you can create plugins for CanJS that work no matter what library someone else is using.
can.trim
removes leading and trailing whitespace.
@codestart
can.trim(' foo '); // 'foo'
@codeend
can.esc
escapes HTML code.
@codestart
can.esc('<foo><bar>'); // '<foo>&<bar>'
@codeend
can.getObject
looks up an object by path.
@codestart
can.('foo.bar', [{foo: {bar: 'baz'}}]); // 'baz'
@codeend
can.capitalize
capitalizes a string.
@codestart
can.('fooBar'); // 'FooBar'
@codeend
can.sub
allows micro-templating.
@codestart
can.sub('{greet}, world!', {greet: 'Hello'}); // 'Hello, world!'
@codeend
can.deparam
transforms a form-encoded string into an object..
@codestart
can.deparam('foo=bar&hello=world'); // {foo: 'bar', hello: 'world'}
@codeend
can.makeArray
converts array-like objects into real Arrays.
@codestart
can.makeArray({0: 'foo', 1: 'bar', length: 2}); // ['foo', 'bar']
@codeend
can.isArray
checks if an object is an Array.
@codestart
can.isArray([]); // true
@codeend
can.map
converts an array into another array using a callback.
@codestart
can.map(['foo', 'bar'], function(element, index) {
return el.toUppercase();
}); // ['FOO', 'BAR']
@codeend
can.each
iterates through an array.
@codestart
can.each([{prop: 'foo'}, {prop: 'bar'}], function(element, index) {
// this callback will be called with:
// element = {prop: 'foo'}, index = 0
// element = {prop: 'bar'}, index = 1
});
@codeend
can.extend
extends one object with the properties of another.
@codestart
var first = {},
second = {a: 'b', c: 'd'},
third = {c: 'e'};
var extended = can.extend(first, second, third); extended === first; // true first; // {a: 'b', c: 'e'} second; // {a: 'b', c: 'd'} third; // {c: 'e'} @codeend
can.param
turns an object into a query string.
@codestart
can.param({a: 'b', c: 'd'}); // 'a=b&c=d'
@codeend
can.isEmptyObject
checks whether an object is empty.
@codestart
can.isEmptyObject({}); // true
can.isEmptyObject({foo: 'bar'}); // false
@codeend
can.proxy
returns a function that calls another function with a set context.
@codestart
var f = can.proxy(function(str) {
return this.a + str;
}, {a: 'b'});
f('bar'); // 'bbar'
@codeend
can.isFunction
checks whether an object is a function.
@codestart
can.isFunction({}); // false
can.isFunction(function() { }); // true
@codeend
can.bind
binds a callback to an event on an object.
@codestart
can.bind(obj, eventName, handler); // Binds handler on obj's eventName event.
@codeend
can.unbind
unbinds a callback from an event on an object.
@codestart
can.unbind(obj, eventName, handler); // Unbinds handler from obj's eventName event.
@codeend
can.delegate
binds a callback to an event on an all elements that match a selector.
@codestart
can.delegate(obj, eventName, handler); // Binds handler on eventName events from all elements under obj that match selector.
@codeend
can.undelegate
unbinds a callback from an event on an all elements that
match a selector.
@codestart
can.undelegate(obj, eventName, handler); // Unbinds handler from eventName events from all elements under obj that match selector.
@codeend
can.trigger
triggers an event on an object.
@codestart
can.trigger(obj, eventName, args); // Executes all handlers attached to obj for eventName with args as additional arguments.
@codeend
can.ajax
will make an AJAX call and return a Deferred that resolves when the
call has returned.
@codestart can.ajax({ url: '/path/to/url', type: 'GET', async: true, dataType: 'json', success: function(json) { }, error: function(xhr) { } }); @codeend
can.$
creates a library-wrapped NodeList.
@codestart
can.$(div.bar); // (in jQuery, a jQuery.fn object)
@codeend
can.append
appends elements to the elements in a NodeList.
@codestart
can.append(nodelist, content); // Appends content to each element in nodelist.
@codeend