我正在使用Angular 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
的全局对象,它对你的代码没有任何影响。相反,您必须使用与$scope.myobj
相同的方法更新!obj
。
答案 1 :(得分:0)
当您将值类型传递给函数时,尝试设置范围对象的方式是错误的,
例如:如果myobj.value的值为true / false ..你正在简单地传递这个值而不是这个变量的引用。
您应该设置如下所示的值
$scope.myFunction = function(obj) {
$scope.myobj = true;
console.log($scope.myobj);
}
或强>
只需传递myObj,如下所示
ng-mouseover="myFunction(myobj)" ng-show="myobj.value"
然后按照下面的方式设置值
$scope.myFunction = function(obj) {
obj.value = true;
console.log($scope.myobj);
}