ng-if 不使用简单 javascript
ng-if not working with simple javascript
当我通过简单 javascript 更改值时,ng-if 不起作用 function.My 函数被调用,但在视图中看不到值的变化。请参考以下代码。
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 Fiddle : JS Fiddle
首先,ng-click
能够解析 angular 表达式。
其次,它处理对当前范围的引用并执行对 $scope.$apply
的调用以通知任何观察者进行更新。如果您要在函数中添加对 angular.element(document.getElementById('span')).scope().$apply()
的调用,它应该会按预期工作。
使用 $scope.apply 。这是因为 angularjs 摘要循环不会像在简单的 JS 函数中那样知道您的值是否在其范围之外发生变化。
ng-if 不起作用 function.My 函数被调用,但在视图中看不到值的变化。请参考以下代码。
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 Fiddle : JS Fiddle
首先,ng-click
能够解析 angular 表达式。
其次,它处理对当前范围的引用并执行对 $scope.$apply
的调用以通知任何观察者进行更新。如果您要在函数中添加对 angular.element(document.getElementById('span')).scope().$apply()
的调用,它应该会按预期工作。
使用 $scope.apply 。这是因为 angularjs 摘要循环不会像在简单的 JS 函数中那样知道您的值是否在其范围之外发生变化。