Угловая функция разрешения ng-submit только в области видимости

0

В угловых 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('/');
}
  • 0
    это не должно быть vm.test2 = test2 ?
  • 0
    да, это была опечатка, хороший улов
Показать ещё 1 комментарий
Теги:
submit

3 ответа

1
Лучший ответ

Хорошим вариантом для вас является создание вашей 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>
0

Когда вы используете 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>
0

Вам нужно удалить(), поскольку он выполняется в this а должен быть fn

измените vm.test2 = test2() на vm.test2 = test2

Ещё вопросы

Сообщество Overcoder
Наверх
Меню