43

ng-init を使用して $scope プロパティの値を設定しようとしていますが、コントローラーの JavaScript でその値にアクセスできません。私は何を間違っていますか?ここにフィドルがあります: http://jsfiddle.net/uce3H/

マークアップ:

<body ng-app>
    <div ng-controller="testController" >
        <input type="hidden" id="testInput" ng-model="testInput" ng-init="testInput='value'" />
    </div>
    {{ testInput }}
</body>

JavaScript:

var testController = function ($scope) {
     console.log($scope.testInput);
}

javascrippt では、$scope.testInput は未定義です。「値」であってはいけませんか?

4

6 に答える 6

39

ng-init を関数として設定するだけです。時計を使用する必要はありません。

<body ng-controller="MainCtrl" ng-init="init()">
  <div ng-init="init('Blah')">{{ testInput }}</div>
</body>

app.controller('MainCtrl', ['$scope', function ($scope) {
  $scope.testInput = null;
  $scope.init = function(value) {
    $scope.testInput= value;
  }
}]);

これが例です。

プランカー

于 2013-11-14T15:56:02.613 に答える
4

HTML:

<body ng-app="App">
    <div ng-controller="testController" >
        <input type="hidden" id="testInput" ng-model="testInput" ng-init="testInput=123" />
    </div>
    {{ testInput }}
</body>

JS:

angular.module('App', []);

testController = function ($scope) {
    console.log('test');
    $scope.$watch('testInput', testShow, true);
    function testShow() {
      console.log($scope.testInput);
    }
}

フィドル

于 2013-11-14T15:46:13.333 に答える
1

CodeHater が言ったように、変数が設定される前に変数にアクセスしています。

これを修正するには、ng-init ディレクティブを最初の div に移動します。

<body ng-app>
    <div ng-controller="testController" ng-init="testInput='value'">
        <input type="hidden" id="testInput" ng-model="testInput" />
       {{ testInput }}
    </div>
</body>

それはうまくいくはずです!

于 2013-11-14T15:41:36.700 に答える
-1

私はいくつかの問題を抱えていまし$scope.$watchたが、多くのテストの後、私の名前が不適切であることがわかり、data-ng-model="User.UserName"それを変更した後、data-ng-model="UserName"すべてが正常に機能しました。.問題の原因となっている名前であると思います。

于 2016-05-19T13:08:44.597 に答える