2017-04-10 44 views
0

我采用了棱角分明1.我有以下标记:函数中的角度绑定?

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

我有以下对象在我的控制器声明:

$scope.myobj = { 
    value: false 
}; 

然后我的函数:

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

我期望它将$ scope.myobj.value设置为true,当我将鼠标悬停在元素上时,它不会。它似乎将它正确地绑定起来,因此它将它拾取为它是一个对象,但它不引用$ scope。我如何去做这件事,以便正确设置$ scope?

+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

他传入的值可以改变,就像他有两个mouseovers影响'$ scope.myobj'和'$ scope。 otherobj'? – George

+0

那么在这种情况下,OP必须放入隔离范围。 – Jai

+0

而是在'function(obj){obj.value = true}' – Srigar

0

您要设置您的范围对象是错误的,因为你是传递一个值类型的运作方式,

为前:如果myobj.value的值是true/false..you的simpling传递这个值而不是这个变量的引用。

你应该设置如下图所示

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

OR

只是通过MyObj中像下面

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

,然后设置的值要设置类似下面

方式的价值
$scope.myFunction = function(obj) { 
    obj.value = true; 
    console.log($scope.myobj); 
}