-
-
Save justinyoo/de8284ca511aa72ccbc1 to your computer and use it in GitHub Desktop.
Event Sourcing & CQRS Pattern for SPA
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module app.angular.Directives { | |
import UsernameDataModel = angular.Models.UsernameDataModel; | |
import UsernameChangeRequestModel = angular.Models.UsernameChangeRequestModel; | |
export interface IUserNameScope extends ng.IScope { | |
model: angular.Models.UsernameDataModel; | |
change: Function; | |
} | |
export class UserName implements ng.IDirective { | |
replace = true; | |
restrict = "EA"; | |
scope = {}; | |
templateUrl = "/App/components/userName/userName.html"; | |
link($scope: IUserNameScope, element: JQuery, attributes: ng.IAttributes) { | |
var $select = element.find("input"); | |
$select.on("change", () => { | |
var streamId = element.data("stream-id"); | |
var value = $scope.model.value; | |
$scope.change($select.attr("id"), $select.attr("name"), value, streamId); | |
}); | |
} | |
controller($scope: IUserNameScope, usernameFactory: angular.Factories.UsernameFactory, replayViewFactory: angular.Factories.ReplayViewFactory) { | |
$scope.model = new UsernameDataModel(); | |
$scope.change = (id, name, value, streamId) => { | |
var request = new UsernameChangeRequestModel(id, name, value, streamId); | |
usernameFactory.postUsernameChange(request) | |
.success((response: angular.Models.UsernameChangeResponseModel) => { | |
replayViewFactory.setUsername(response.data.value); | |
console.log(response); | |
}) | |
.error((response: angular.Models.UsernameChangeResponseModel) => { | |
console.log(response); | |
}); | |
} | |
} | |
} | |
} | |
angular.module("app") | |
.directive("userName", () => new app.angular.Directives.UserName()); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment