如何在页面加载时在Angularjs中将HTML中的init值转换为控制器

Bal*_*ran 1 html angularjs angularjs-scope

<ul>                                                                
<li ng-init="formData.mdpSunday='5'">
<input ng-model="formData.mdpSunday" name="mdpSunday" type="radio" value="5">
</li>
</ul>


app.controller('doublePointCtrl', function ($rootScope, $scope, $http, $filter, Flash) {
var data =$scope.formData.mdpSunday;
});
Run Code Online (Sandbox Code Playgroud)

页面加载时,我无法在控制器中获取init值

Pau*_*tes 5

您想ngInit在Angular设置值之前读取值.

第一种选择:

因此,您可以倾听自己的ngInit价值,并在设置时阅读您的数据.您可以使用以下$watch方法:

调节器

(function(){

function Controller($scope) {

  //Watch you ngInit value
  $scope.$watch('data', function(){
    //When your value is set, you can retrieve it
    console.log($scope.data);
  });


}

angular
.module('app', [])
.controller('ctrl', Controller);

})();
Run Code Online (Sandbox Code Playgroud)

HTML

  <body ng-app='app' ng-controller="ctrl" ng-init="data='5'">

    <input type="text" ng-model="data">

  </body>
Run Code Online (Sandbox Code Playgroud)

但是,你不应该使用$ watch.您可以获得更有效和正确的方法来实现这一目标.

第二种选择:

您可以设置ngInit功能.

调节器

(function(){

function Controller($scope) {

  $scope.init = function(n){
    $scope.data = n;
  }


}

angular
.module('app', [])
.controller('ctrl', Controller);

})();
Run Code Online (Sandbox Code Playgroud)

HTML

  <body ng-app='app' ng-controller="ctrl" ng-init="init(5)">

    <input type="text" ng-model="data">

  </body>
Run Code Online (Sandbox Code Playgroud)

我认为第二种选择更清洁.