npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

knockout-context-util

v1.0.1

Published

Module that provides utility functions for accessing a model's knockout context

Downloads

1

Readme

knockout-context-util

Module that provides utility functions for accessing a model's knockout context

Installation

bower install --save knockout-context-util

In scripts/grunt/config/bowercopy.js add this to the third-party files near the bottom of the file:

'knockout-context-util': 'knockout-context-util/knockout-context-util.js'

If you run grunt bowercopy now, you should see the knockout-context-helper folder in your js libs folder. Add a reference to the js file in that folder to your requirejs config in both the main.js and main-release-paths.json files:

'knockoutContextUtil': 'libs/knockout-context-util/knockout-context-util'

Usage

define(['knockout-context-util'], function (kocoUtil) {
  var rootContext = kocoUtil.getRoot();
  var productSelector = '#productId';
  var productContext = kocoUtil.getContext(productSelector);
  var productViewModel = kocoUtil.getViewModel(productSelector); // === productContext.$data
});

Passing your root selector to the module

If your root viewModel is not attached to the HTML body but some other element, you can pass the root selector to the module by passing a config object to the requirejs.config call:

requirejs.config({
  paths: {
    'knockout': 'libs/knockout/knockout-3.4.0',
    'jquery': 'libs/jquery/jquery-3.1.0.min',
    /* ... */
    'knockoutContextUtil': 'libs/knockout-context-util/knockout-context-util'
  }
  config: {
    knockoutContextUtil: {
      bodySelector: '#myRoot' // your custom body selector
    }
  }
});

You can then use the getRoot function to access the data of that particular element's context:

  rootContext = kocoUtil.getRoot();
  // returns the same as:
  rootContext = kocoUtil.getContext('#myRoot').$data;

API

getRoot()

Returns the data of the knockout context of the root viewModel, or undefined if no root context was found.

getContext(elementAccessor)

Returns the knockout context of the DOM element identified by elementAccessor. Returns the first context found, if elementAccessor matches multiple DOM elements. Returns undefined if no knockout context is found.

elementAccessor

A query selector string (see the jQuery docs for more information about these).

getViewModel(elementAccessor)

Returns the viewModel of the knockout context identified by elementAccessor. Same as calling getContext(elementAccessor).$data, but does not crash if no knockout context is found. Instead, undefined is returned in this case.

elementAccessor

A query selector string (see the jQuery docs for more information about these).

create([bodySelector])

Creates a knockout-context-util module with the given bodySelector, i.e. this module's getRoot function then returns the knockout context identified by bodySelector.

bodySelector

A query selector string (see the jQuery docs for more information about these).

License

MIT © enpit GmbH & Co. KG