В угловых js, имеет ли html доступ к функциям, не определяемым в $ scope?
Например
Вот контроллер
function TestController($location, $scope){
var vm = this;
vm.test2 = test2
$scope.test1 = function(){
console.log("testing");
};
function test2(){
console.log("what is going on");
}
}
Вот html, который работает
<div ng-controller="TestController" id="whatup">
<form ng-submit="test1()">
<input class="form-control col-lg-8" type="text" placeholder="Search" ng-model="email"></input>
<input type="submit">
</form>
</div>
Если я изменил test1()
на test2()
, код больше не работал, есть ли причина для этого?
Должен ли я подвергать test2()
альтернативными способами, такими как определение маршрута?
function config($routeProvider){
$routeProvider.when('/test', {
controller: 'TestController',
controllerAs: 'vm',
templateUrl: 'templates/test.html'
}).otherwise('/');
}
Хорошим вариантом для вас является создание вашей test2
функции непосредственно в переменной контроллера:
function TestController($location, $scope, Authentication){
var vm = this;
$scope.test1 = function(){
console.log("testing");
};
vm.test2 = function (){
console.log("what is going on");
};
}
вы также можете настроить html так:
<div ng-controller="TestController as vm" id="whatup">
<form ng-submit="vm.test2()">
<input class="form-control col-lg-8" type="text" placeholder="Search" ng-model="email"></input>
<input type="submit">
</form>
</div>
Когда вы используете this.propOrMethod в своем коде контроллера, вы можете получить это в представлении с помощью синтаксиса ControllerAs:
<div ng-controller="TestController as testController">
{{testController.propOrMethod}}
</div>
Рекомендация:
Не путайте свой код самостоятельно, используя оба метода метод $scope way
this.propOrMethod way
. В любом случае вы можете использовать оба варианта, если хотите использовать их в разных div следующим образом:
<div ng-controller="TestController as testController">
{{testController.propOrMethod}} <!-- this.propOrMethod-->
</div>
<div ng-controller="TestController">
{{propOrMethod}} <!--$scope.propOrMethod-->
</div>
Вам нужно удалить(), поскольку он выполняется в this
а должен быть fn
измените vm.test2 = test2()
на vm.test2 = test2
vm.test2 = test2
?