контроллер как в форме AngularJS - PullRequest
0 голосов
/ 20 сентября 2019

Я использую AngularJS controller as, но мне не удается правильно определить область действия функций в контроллере.

<div ng-app="myApp" ng-controller="MyController as myc">
  <form method="post" name="myc.form" ng-init="fetch()" ng-submit="update()">
    <textarea rows="4" class="form-control" id="text" ng-model="lmc.news.text"></textarea>
  </form>
</div>

и JavaScript

var app = angular.module('myApp', []);

app.controller('MyController', function($http){

    this.fetch = function(){
         $http({
            method: 'get',
            url: 'get.php'
        }).then(function successCallback(response) {
           this.news = response.data;
        });
    };

Я думаю, this в fetch метод не подходит, но я не понимаю, как это сделать.

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Вы забыли "вызвать" контроллер в ng-init и ng-submit:

<div ng-app="myApp" ng-controller="MyController as myc">
 <form method="post" name="myc.form" ng-init="myc.fetch()" ng-submit="myc.update()">
<textarea rows="4" class="form-control" id="text" ng-model="lmc.news.text"></textarea>
</form>
</div>

Я думаю, что ваша проблема в том, что

0 голосов
/ 20 сентября 2019

Было 2 проблемы: как указали @ Schwarz54 и @ user2718281, нужно использовать ng-init="myc.fetch()".

Другой вопрос заключается в том, что this в методе init не относится к той же области.

Это работает:

app.controller('MyController', function($http){

    var that = this;

    this.fetch = function(){
        $http({
            method: 'get',
            url: 'get.php'
        }).then(function successCallback(response) {
            that.news = response.data;
        });
    };
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...