[Search] Amended ClickAwayController to trigger digest via instead of . Fixes #1065

This commit is contained in:
Henry 2016-06-30 14:44:39 -07:00
parent 652a50c700
commit 59e18b9a79
3 changed files with 10 additions and 12 deletions

View File

@ -259,7 +259,7 @@ define([
"implementation": ClickAwayController, "implementation": ClickAwayController,
"depends": [ "depends": [
"$document", "$document",
"$timeout" "$scope"
] ]
}, },
{ {

View File

@ -34,7 +34,7 @@ define(
* @param $scope the scope in which this controller is active * @param $scope the scope in which this controller is active
* @param $document the document element, injected by Angular * @param $document the document element, injected by Angular
*/ */
function ClickAwayController($document, $timeout) { function ClickAwayController($document, $scope) {
var self = this; var self = this;
this.state = false; this.state = false;
@ -44,7 +44,7 @@ define(
// `clickaway` action occurs after `toggle` if `toggle` is // `clickaway` action occurs after `toggle` if `toggle` is
// triggered by a click/mouseup. // triggered by a click/mouseup.
this.clickaway = function () { this.clickaway = function () {
$timeout(function () { $scope.$apply(function () {
self.deactivate(); self.deactivate();
}); });
}; };

View File

@ -26,7 +26,7 @@ define(
describe("The click-away controller", function () { describe("The click-away controller", function () {
var mockDocument, var mockDocument,
mockTimeout, mockScope,
controller; controller;
beforeEach(function () { beforeEach(function () {
@ -34,10 +34,11 @@ define(
"$document", "$document",
["on", "off"] ["on", "off"]
); );
mockTimeout = jasmine.createSpy('timeout'); mockScope = jasmine.createSpyObj('$scope', ['$apply']);
controller = new ClickAwayController( controller = new ClickAwayController(
mockDocument, mockDocument,
mockTimeout mockScope
); );
}); });
@ -77,18 +78,15 @@ define(
}); });
it("deactivates and detaches listener on document click", function () { it("deactivates and detaches listener on document click", function () {
var callback, timeout; var callback, apply;
controller.setState(true); controller.setState(true);
callback = mockDocument.on.mostRecentCall.args[1]; callback = mockDocument.on.mostRecentCall.args[1];
callback(); callback();
timeout = mockTimeout.mostRecentCall.args[0]; apply = mockScope.$apply.mostRecentCall.args[0];
timeout(); apply();
expect(controller.isActive()).toEqual(false); expect(controller.isActive()).toEqual(false);
expect(mockDocument.off).toHaveBeenCalledWith("mouseup", callback); expect(mockDocument.off).toHaveBeenCalledWith("mouseup", callback);
}); });
}); });
} }
); );