Code Monkey home page Code Monkey logo

Comments (2)

johnyanarella avatar johnyanarella commented on July 20, 2024

The answer depends on whether you are planning on using any of the other capabilities of Ext.app.Application. If you are using the Deft JS IoC container for dependency injection (instead of using the stores, views, models configs in Ext.app.Application) and Deft JS View Controllers (instead of Ext.app.Controller and the controllers config in Ext.app.Application), chances are you don't not need Ext.app.Application anymore.

If you want an application-wide event bus, you can configure the IoC container with one and inject it as needed. To do so, you simply configure the IoC container with an instance of Ext.util.Observable to be injected wherever needed.

Deft.Injector.configure({
    eventBus: 'Ext.util.Observable'
});

(This works because in addition to being usable as a mixin, Ext.util.Observable can also be directly instantiated and used as a standalone event bus.)

If it turns out you still need Ext.app.Application, you can configure the IoC container with the Ext.app.Application instance as the value, like so:

Ext.application({
    name: 'MyApp',
    launch: function() {
        Deft.Injector.configure({
            'application': {
                value: this
            }
        });

        // Create Viewport and views
        ...
    }
});

I created an example of this approach on JSFiddle here: http://jsfiddle.net/CodeCatalyst/K2ZgR/

Deft.Injector.configure() can be called multiple times in your application. Each time it is called it adds or updates the specified identifiers. In this case, you'll want to do the majority of your IoC container configuration in Ext.onReady() and only configure the application reference within your Ext.app.Application's launch() method.

Be careful, though. If you use Ext.app.Application's stores or controllers configs, the singleton instances it creates are instantiated before the Ext.app.Application instance's constructor or launch() method are fired. If you've instantiated classes that depend on the application before then, Deft.Injector will throw an error because the application identifier can only be resolved after its been created and you've configured the IoC container with that reference.

from deftjs.

neilmcguigan avatar neilmcguigan commented on July 20, 2024

That's awesome John. Thank you a ton.

Deft is a much better solution than Sencha's first attempt at MVC.

Cheers,

Neil

On Tue, Jun 12, 2012 at 8:42 AM, John Yanarella <
[email protected]

wrote:

The answer depends on whether you are planning on using any of the other
capabilities of Ext.app.Application. If you are using the Deft JS IoC
container for dependency injection (instead of using the stores, views,
models configs in Ext.app.Application) and Deft JS View Controllers
(instead of Ext.app.Controller and the controllers config in
Ext.app.Application), chances are you don't not need
Ext.app.Application anymore.

If you want an application-wide event bus, you can configure the IoC
container with one and inject it as needed. To do so, you simply configure
the IoC container with an instance of Ext.util.Observable to be injected
wherever needed.

Deft.Injector.configure({
   eventBus: 'Ext.util.Observable'
});

(This works because in addition to being usable as a mixin,
Ext.util.Observable can also be directly instantiated and used as a
standalone event bus.)

If it turns out you still need Ext.app.Application, you can configure
the IoC container with the Ext.app.Application instance as the value,
like so:

Ext.application({
   name: 'MyApp',
   launch: function() {
       Deft.Injector.configure({
           'application': {
               value: this
           }
       });

       // Create Viewport and views
       ...
   }
});

I created an example of this approach on JSFiddle here:
http://jsfiddle.net/CodeCatalyst/K2ZgR/

Deft.Injector.configure() can be called multiple times in your
application. Each time it is called it adds or updates the specified
identifiers. In this case, you'll want to do the majority of your IoC
container configuration in Ext.onReady() and only configure the
application reference within your Ext.app.Application's launch() method.

Be careful, though. If you use Ext.app.Application's stores or
controllers configs, the singleton instances it creates are instantiated
before the Ext.app.Application instance's constructor or launch()
method are fired. If you've instantiated classes that depend on the
application before then, Deft.Injector will throw an error because the
application identifier can only be resolved after its been created and
you've configured the IoC container with that reference.


Reply to this email directly or view it on GitHub:
#21 (comment)

from deftjs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.