1

フィドル: http://jsfiddle.net/RnJbt/2/

名前空間に含めることはそれほど重要ではありませんが、テンプレートのスコープに役立つローカル モデルを開始するテンプレート ブロックがあります。ユーザーがボタンをクリックすると、モデルが関数に渡されます。関数はモデルの値を更新する必要があります。

Fiddle は、更新関数に引数として渡された場合、モデル「deneme」が変更されないことを示しています。$scopeただし、以下のようにオブジェクトを介してモデルにアクセスすると、「update」関数の値を更新できます。

...controller...
    $scope.update = function(val){
        val = 10; // does not update deneme 
        $scope.deneme = 34; // updates it as expected
    }   

コントローラーの名前空間を、開始されたテンプレート ブロックにのみ役立つ使い捨てのモデル名で汚染したくありません。名前で宣言することなく、コントローラースコープ内でほとんど匿名の引数を処理するにはどうすればよいですか?

4

1 に答える 1

1

プリミティブな値だからです。このようにフィドルを少し変更しましたが、期待どおりに機能します。

ng-init="deneme = {value: 5}"

$timeout(function(){
val.value = 23;
.....

これは、JavaScript 変数をプリミティブに設定し、別の変数をその値に設定してから、元の変数をリセットするのと同じです。

var a = 10
var b = a
var a = 2
// a = 2, b = 10

数か月前に同じ問題に遭遇したので、まだ記憶に新しいところです。

于 2013-07-26T19:59:43.570 に答える