将输入文本发送到AngularJS中的控制器范围

时间:2017-10-23 13:29:55

标签: javascript angularjs

我有这个HTML页面:

<div class="rtm-nav">
    <div ng-app>
    <body ng-controller="DemandCtrl" ng-submit="submit()">
        <label>From:
            <input type="text" name="input" ng-model="ctrl.dataa.from">
        </label>
        <label>To:
            <input type="text" name="input" ng-model="ctrl.dataa.to">
        </label>
        <input type="submit" id="submit" value="Apply" />

        <script src="demand/demand.js"></script>
    </body> 
    </div>
</div>

我想保存控制器范围内2个文本框中的输入文本。这就是我尝试这样做的方式:

class DemandCtrl {
    constructor(ChartDataService) {
        this.ChartDataService = ChartDataService;
        debugger;
        this.dataa = {
            from: ctrl.dataa.from,
            to: ctrl.dataa.to
        };
    }

    $onInit() {
        getData.call(null, this);       
    }

}

我收到错误说:

  

ReferenceError:未定义ctrl.dataa

是否有更好的方法将数据从输入文本发送到控制器?

1 个答案:

答案 0 :(得分:0)

您还没有定义控制器接受的范围。这就是为什么您无法从表单中读取数据的原因。我还建议使用<form>来处理任何类型的数据提交。所以看看你的重构例子:

==== HTML ======

    <div class="rtm-nav">
        <div ng-app="my-app">
          <form ng-submit="submit()" ng-controller="DemandCtrl">
            <label>From:
                <input type="text" name="input" ng-model="ctrl.data.from">
            </label>
            <label>To:
                <input type="text" name="input" ng-model="ctrl.data.to">
            </label>
            <input type="submit" id="submit" value="Apply" />
          </form>

        </div>
    </div>

=====控制器

    angular.module('my-app', [])
       .controller('DemandCtrl', function($scope) {
            $scope.submit = function() {
                let data = {
                    from: $scope.ctrl.data.from,
                    to: $scope.ctrl.data.to,
                }
               console.log(data);
            };
    });