0

angularプロジェクトでng-initを使用して関数に値を渡すにはどうすればよいですか? 私はこれを試してみましたが、うまくいきます:

<div ng-controller="myCtrl" ng-init="myfunction(1)">

しかし、問題は、私がこれを行うときです

<div ng-controller="myCtrl" ng-init="myfunction({{id}})">

また

<div ng-controller="myCtrl" ng-init="myfunction(id)">

うまくいきません!テンプレートに {{id}} の値を表示すると、id: 1 が返されるので、id は存在します。

ここで何が問題なのですか?

4

3 に答える 3

1

Brendan Green が述べたようにid、スコープ変数の場合は関数に渡す必要はありません。このようなものは機能しますか?

$scope.myfunction = function(){
  // do whatever with $scope.id
}

あなたが本当にそれを使用する必要がある場合は、3番目の例が機能するはずです。これがプランカーです。

于 2016-01-22T01:20:27.890 に答える
0

で使用するmyfunctionng-initは、関数を定義する必要があります。$scopeこれは、ng-init が式を評価するためです。

だからここにあなたがすべきことがあります:

HTML:

<body ng-controller="MainCtrl" ng-init='myfunction("john");'>
    <p>Hello {{name}}!</p>
  </body>

JS:

app.controller('MainCtrl', function($scope) {
  $scope.name = 'Mike';
  
  $scope.myfunction = function(otherName){
    $scope.name = otherName;
  };
});

ng-initこの方法の使用は推奨されないことに注意してください。

ngInit の唯一の適切な使用法は、以下のデモに見られるように、ngRepeat の特別なプロパティをエイリアシングすることです。この場合以外に、ngInit ではなくコントローラーを使用して、スコープの値を初期化する必要があります。

于 2016-01-22T01:32:51.037 に答える
0

ここにフィドルを作成しました:http://jsfiddle.net/frishi/HB7LU/22553/

基本的に、補間された値ではなく、変数自体を関数に渡します。{{boo}}

<div ng-controller="MyCtrl" ng-init="boo=2">
  <div ng-click="foo(boo)">Click Me</div>
</div>
于 2016-01-22T01:13:19.750 に答える