0

当我通过简单的 javascript 函数更改值时,ng-if 不起作用。我的函数被调用,但在视图中看不到值的变化。请参考下面的代码。

HTML

<div id="span" ng-app='MyModule' ng-cloak ng-controller="MyController">

<div ng-if="!bool">
  This is for true
</div>
<div ng-if="bool">
  This is False
</div>
{{bool}}
<br>
<input type="submit" ng-click = "myfunction('test')" value="ng-if button">
</div>
<input type="submit" onClick = "check1()" value="simple JS button">

JS

angular.module('MyModule', [])
.controller('MyController', function ($scope) {
$scope.bool = true;
$scope.myfunction = function (data) {
    $scope.bool = !$scope.bool;
};
});
function check1() {
    angular.element(document.getElementById('span')).scope().myfunction('test');
}

当我使用ng-click button它时,它会更改更改的值bool,但simple JS button. 实际上我正在一个已经使用 jQuery 的页面中实现 Angular,所以我需要使用simple JS button.

JS 小提琴JS 小提琴

4

2 回答 2

1

首先,ng-click能够解析角度表达式。

其次,它处理对当前范围的引用并执行调用$scope.$apply以通知任何观察者进行更新。如果您要angular.element(document.getElementById('span')).scope().$apply()在函数中添加调用,它应该可以按预期工作。

于 2017-03-31T13:49:46.403 回答
0

使用 $scope.apply 。这是因为 angulars 摘要循环不会知道您的值是否在其范围之外发生变化,就像在简单的 JS 函数中一样。

于 2017-03-31T13:50:32.333 回答