我正在尝试使用angular.js但我无法弄清楚如何在测试之前将一个简单的变量注入我的控制器。
这是我的控制者:
angular.module("app").controller("SimpleController", SimpleController);
function SimpleController() {
var vm = this;
vm.myVar = 1;
vm.getMyVar = function() {
return vm.myVar;
};
}
我的测试如下:
describe("SimpleController", function() {
var vm;
beforeEach(module('app'));
beforeEach(inject(function($controller, $rootScope) {
vm = $controller('SimpleController', {
$scope: $rootScope.$new(),
myVar: 2
});
}));
it('myVar should be 2 not 1', function() {
expect(vm.getMyVar()).toEqual(2);
});
});
我做了很多谷歌搜索,但这确实令人困惑,因为许多人确实在控制器中使用$scope
,而不像我一样使用this
。但我想注入变量也应该与this
一起使用?
答案 0 :(得分:0)
您可能想尝试以这种方式编写控制器。这将使$ scope可访问。
(function () {
angular.module("app").controller("SimpleController", SimpleController);
SimpleController.$inject = ['$scope'];
function SimpleController($scope) {
$scope.somevar = "something";
}
})();
我确定你可能已经看到过这些文档,但这里有docs的链接,其中包含基础知识,至少应该让你朝着正确的方向前进。
另一种选择是这样的:
app.controller('SimpleController', ['$scope', function($scope) {
$scope.somevar = "something";
....
}]);
当您使用$ scope时,您将在视图中公开提供该属性。