allow omitting controller for sub modules
This commit is contained in:
parent
c81294bce8
commit
655e4ceafb
2 changed files with 17 additions and 2 deletions
|
|
@ -508,7 +508,7 @@ var m = (function app(window, undefined) {
|
||||||
var FRAME_BUDGET = 16; //60 frames per second = 1 call per 16 ms
|
var FRAME_BUDGET = 16; //60 frames per second = 1 call per 16 ms
|
||||||
function submodule(module, args) {
|
function submodule(module, args) {
|
||||||
var controller = function() {
|
var controller = function() {
|
||||||
return module.controller.apply(this, args) || this
|
return (module.controller || function() {}).apply(this, args) || this
|
||||||
}
|
}
|
||||||
var view = function(ctrl) {
|
var view = function(ctrl) {
|
||||||
if (arguments.length > 1) args = args.concat([].slice.call(arguments, 1))
|
if (arguments.length > 1) args = args.concat([].slice.call(arguments, 1))
|
||||||
|
|
@ -522,7 +522,7 @@ var m = (function app(window, undefined) {
|
||||||
}
|
}
|
||||||
m.module = function(root, module) {
|
m.module = function(root, module) {
|
||||||
if (!root) throw new Error("Please ensure the DOM element exists before rendering a template into it.");
|
if (!root) throw new Error("Please ensure the DOM element exists before rendering a template into it.");
|
||||||
if (root.controller) return submodule(root, [].slice.call(arguments, 1))
|
if (root.view) return submodule(root, [].slice.call(arguments, 1))
|
||||||
var index = roots.indexOf(root);
|
var index = roots.indexOf(root);
|
||||||
if (index < 0) index = roots.length;
|
if (index < 0) index = roots.length;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,21 @@ function testMithril(mock) {
|
||||||
|
|
||||||
return slot1 == 1 && slot2 == 1
|
return slot1 == 1 && slot2 == 1
|
||||||
})
|
})
|
||||||
|
test(function() {
|
||||||
|
//module should work without controller
|
||||||
|
mock.requestAnimationFrame.$resolve()
|
||||||
|
|
||||||
|
var root = mock.document.createElement("div")
|
||||||
|
var slot1, slot2
|
||||||
|
var module = {
|
||||||
|
view: function(ctrl, options) {slot2 = options.a}
|
||||||
|
}
|
||||||
|
m.module(root, module, {a: 1})
|
||||||
|
|
||||||
|
mock.requestAnimationFrame.$resolve()
|
||||||
|
|
||||||
|
return slot2 == 1
|
||||||
|
})
|
||||||
test(function() {
|
test(function() {
|
||||||
//arguments should update in component's view
|
//arguments should update in component's view
|
||||||
mock.requestAnimationFrame.$resolve()
|
mock.requestAnimationFrame.$resolve()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue