New Release of Widget Wrangler

When you're writing a widget in Angular 1.x, it's possible to pass configuration information into the widget using the ng-init directive, as shown in this example. (Angular 2 isn't ready for widgets yet since there's no way to put multiple copies on the page; Microsoft is working with Google on a fix. Here's a sample.)

That works fine in Angular, but what if you're using some other framework? The Widget Wrangler has a feature, the ww-appBind attribute, that allows you to bootstrap your own widget; this allows pretty much any JavaScript framework. But then how can you pass in configuration information?

The answer came from colleague Brian McCullough, who contributed a new feature to the Widget Wrangler. I have to admit I've been kind of swamped at work lately; he submitted the pull request more than a month ago! Well today Brian's new attribute, ww-appConfig, is released in version 1.02 of the Widget Wrangler.

Here's an example:

<h1>Knockout Widget 1</h1>
<span data-bind="text: textboxLabel"></span>:
  <input data-bind="textInput: message, event: {keyup: messageChanged}">
    <span data-bind="text:messageLabel"></span>:
    <span class="secret" data-bind="text: message"></span>
  <script type="text/javascript"
          ww-appConfig='{"textboxLabel":"Enter a secret message",
                        "messageLabel":"The secret message is"}'
          ww-appCss='[{"src": "style.css"}]'
          ww-appScripts='[{"src": "", priority":0},
                          {"src": "script.js", "priority":1} ]'> 

In this example, two labels are passed into ww-appConfig in JSON format.The Widget Wrangler passes the appConfig value to the appBind function, myWidget.Load(), which parses the JSON and makes it available to the Knockout application.

var myWidget = myWidget || {};

myWidget.Load = function (element, config) {
  myWidget.Config = JSON.parse(config);
  ko.applyBindings(new myWidget.vm(), element);

You can see the whole thing in action in this Plunk.

Thanks Brian, this is a great addition and your contribution was clean and ready-to-go!

Comments (0)

Skip to main content