Javascript ng如果=”的话;“真的”+;数据ng如果=”的话;“真的”;计算结果为假?
事实上,如果使用angularJS+1.6在html元素中使用Javascript ng如果=”的话;“真的”+;数据ng如果=”的话;“真的”;计算结果为假?,javascript,angularjs,Javascript,Angularjs,事实上,如果使用angularJS+1.6在html元素中使用ng if=“truthyValue”和data ng if=“truthyValue”,受影响的元素将不会在DOM中呈现。即使将ng if和data ng if与布尔值一起使用,这也是正确的 有人知道为什么会发生这种情况吗?因此,在使用Angular 1.6.5进行实验之后,它看起来工作得很好 无论如何,您不应该在同一个元素上同时使用数据ng if和ng if。坚持其中一个 <div ng-app="myApp">
ng if=“truthyValue”
和data ng if=“truthyValue”
,受影响的元素将不会在DOM中呈现。即使将ng if
和data ng if
与布尔值一起使用,这也是正确的
有人知道为什么会发生这种情况吗?因此,在使用Angular 1.6.5进行实验之后,它看起来工作得很好 无论如何,您不应该在同一个元素上同时使用数据ng if和ng if。坚持其中一个
<div ng-app="myApp">
<div ng-controller="MyCtrl">
<div ng-if="false">hello there</div>
<div ng-if="true">whats up</div>
</div>
</div>
var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', ['$scope', function($scope) {
}]);
你好
怎么了
var myApp=angular.module('myApp',[]);
控制器('MyCtrl',['$scope',函数($scope){
}]);
这是一个密码笔:
这种行为不仅见于ng if,也见于其他角度指令,如ng repeat。当然,删除其中一个声明会立即修复错误
下面是一个不起作用的示例,同时使用ng repeat
和data ng repeat
:
这个答案引用了AngularJS的多句话
原因是编译了AngularJS HTML模板: 对于AngularJS,“编译”意味着将指令附加到HTML以使其具有交互性 在编译过程中,模板指令会经历一个称为规范化的过程,该过程涉及将HTMLs不区分大小写的名称更改为AngularJS中使用的camelCase名称,这遵循以下过程:
x-
和数据-
:
、-
或
分隔的名称转换为大小写ngIf
指令附加到同一HTML元素,然后这些指令会相互干扰(它适用于两次出现的ng if
而不是ng if
和data ng if
的原因是,如果有两个ng if
到达AngularJS编译器,则您的web浏览器会丢弃其中一个ng if
)
因此,避免这种情况发生的解决方案是不要在HTML中使用多个AngularJS规范化为同一事物的指令。有趣。为那些想尝试的人重新编写:但无论如何,你为什么要这样做?
ng if
和data ng if
是表达同一事物的两种方式。我不想这样做,不是出于目的当然,但是我做得不对,我真的想知道为什么会发生这种情况,这样我就可以更多地了解这个框架。有趣的是,你也可以使用ng attr data ng if=“true”
和chainng attr
s,所以ng attr ng attr ng attr ng if=“true”
同样有效谢谢你的回答,但这并不是我无法修复的错误,这只是我想理解的一种奇怪行为。我知道。我只是向你展示如何使用它,使其有效。我同意你的观点,即“仅为真”不起作用很奇怪。显然有人认为我的答案不够好,并投了反对票!我想是的你被否决了,因为你不关心主要问题的事实。