2017-04-10 11 views
0

私は次のマークアップ持っている角度1を使用しています:関数の角度結合?

$scope.myobj = { 
    value: false 
}; 

そして、私の機能::

$scope.myFunction = function(obj) { 
    obj = true; 
    console.log($scope.myobj); 
} 
私は私のコントローラで宣言された以下の目的を持って

ng-mouseover="myFunction(myobj.value)" ng-show="myobj.value" 

要素の上にカーソルを置いたときに$ scope.myobj.valueをtrueに設定することを期待していますが、そうではありません。それはそれがオブジェクトであるが、それは$スコープのものを参照していないので、それを拾うようにそれを正当にバインドするようです。どのようにして$スコープを正しく設定するようにするのですか?

+0

あなたの関数内でオブジェクトを直接渡すことができます....同じものについて私の答えを参照してください –

答えて

0

代わりにこれを行う:

$scope.myFunction = function(obj) { // passed value false; 
    $scope.myobj.value = !obj; // !false === true 
    console.log($scope.myobj); // outputs { value : true } 
}; 

をあなたが何をしましたか?

obj = true;これはブール値trueのグローバルオブジェクトを宣言し、コードには影響しません。その代わりに、!objと同じ方法で反対の渡された値で$scope.myobjを更新する必要があります。

+0

'$ scope.myobj'と' $ scopeに2回のマウスオーバーがあった場合のように、彼が渡す値は何ですか?その他の? – George

+0

その場合、OPは隔離された範囲に入れなければなりません。 – Jai

+0

代わりに 'function(obj){obj.value = true}'の内部 – Srigar

0

あなたは元のために、あなたの関数に

を値の型を渡しているとして、あなたのスコープのオブジェクトを設定しようとしている方法が間違っている:myobj.valueの値がtrueの場合/ false..youがsimplingていますこの変数の参照ではなく、この値を渡します。

あなただけ

ng-mouseover="myFunction(myobj)" ng-show="myobj.value" 

以下のようにこのmyobjを通過した後、値あなたが

以下のように設定されているように設定

$scope.myFunction = function(obj) { 
    $scope.myobj = true; 
    console.log($scope.myobj); 
} 

OR

以下のような値を設定する必要があります

$scope.myFunction = function(obj) { 
    obj.value = true; 
    console.log($scope.myobj); 
}