Durandal Issue with knockout and type script 1.8.4

68 views
Skip to first unread message

Rayudu ikkurthi

unread,
Mar 7, 2016, 10:32:06 PM3/7/16
to DurandalJS

I am working on MVVM Durandal SPA application with VS2012. Now I migrated to VS2015 with Typescript 1.8.4. I am working with typescript modules. All Typescript issues resolved. But Where ever I passed bindings with knockout all are showing as undefined in console.


Reason: Due to  return statement at end of view model(ts Module) build error occurring . so, JavaScript is not generating for return statement.


Build error was "Return statement can only be used within a function body". 


 If it 's generate JavaScript then my problem will fix.


Sample TS Code for ViewModal:


class Greeter {



        greeting
: string;

        constructor
(message: string) {

           
this.greeting = message;

       
}

        greet
() {

           
return "Hello, " + this.greeting;

       
}

   
}

 
return Greeter;


Generated JS Due to Build Error:


define(["require", "exports"], function (require, exports) {



       
"use strict";

       
var Greeter = (function () {

           
function Greeter(message) {

               
this.greeting = message;

           
}

           
Greeter.prototype.greet = function () {

               
return "Hello, " + this.greeting;

           
};

           
return Greeter;

       
}());

       



   
});


Due to return Greeter in typescript throwing build errors, The JavaScript not generated return statement properly.

Actual need JavaScript is:

 
define(["require", "exports"], function (require, exports) {
           
"use strict";
           
var Greeter = (function () {
               
function Greeter(message) {
                   
this.greeting = message;
               
}
               
Greeter.prototype.greet = function () {
                   
return "Hello, " + this.greeting;
               
};
               
return Greeter;
           
}());
            exports
.Greeter = Greeter;
           
return Greeter;
       
});



For more details please see attached image.


issue.png

Carl Cubillas

unread,
Apr 13, 2016, 9:02:55 PM4/13/16
to DurandalJS
Instead of

return Greeter;

try,

export = Greeter;

If you want a singleton,

var instance = new Greeter();
export = instance;

Rayudu ikkurthi

unread,
May 2, 2016, 6:24:11 AM5/2/16
to DurandalJS
Thanks.

Awesome working fine.
Reply all
Reply to author
Forward
0 new messages