用javascript给子节点添加angular属性
adding angular attributes to child nodes with javascript
我有这段代码
<div id="colors">
<div id="red" >Red</div>
<div id="green" >Green</div>
<div id="blue" >Blue</div>
<div id="purple" >Purple</div>
<div id="gray" >Dark Slate Gray</div>
<div id="olive" >Olive</div>
</div>
和我想添加angular.js
属性的每一个子,使其"角兼容"。现在,我知道我必须做一些像
for (i in document.getElementById("colors").childNodes.length){
document.getElementById("colors").childNodes[i];
}
但是我不知道怎么做最后一部分,实际上是添加新属性,比如
document.getElementById("colors").childNodes[i].attribute('data:ng-hide', 'hidden');
感谢更新我是angular.js
新手
这是整个代码
html文件
<script src="js/angular.min.js"></script>
<script src="js/sockModule.js"></script>
<body ng-controller="myProductDetailCtrl">
<button ng-click="showHideColors()" type="button">
{{isHidden ? 'Show Available Colors' : 'Hide Available Colors'}}
</button>
<div id="red" ng-hide="isHidden">Red</div>
<div id="green" ng-hide="isHidden">Green</div>
<div id="blue" ng-hide="isHidden">Blue</div>
<div id="purple" ng-hide="isHidden">Purple</div>
<div id="gray" ng-hide="isHidden">Dark Slate Gray</div>
<div id="olive" ng-hide="isHidden">Olive</div>
</body>
和sockModule.js
文件
var sockModule = angular.module('sockModule', []);
sockModule.controller('myProductDetailCtrl', function ($scope) {
$scope.isHidden = true;
$scope.showHideColors = function () {
$scope.isHidden = !$scope.isHidden;//
}
}
);
我要做的是替换这里重复的ng-hide="isHidden"
:
<div id="red" ng-hide="isHidden">Red</div>
<div id="green" ng-hide="isHidden">Green</div>
<div id="blue" ng-hide="isHidden">Blue</div>
<div id="purple" ng-hide="isHidden">Purple</div>
<div id="gray" ng-hide="isHidden">Dark Slate Gray</div>
<div id="olive" ng-hide="isHidden">Olive</div>
用一些更快/更聪明的东西,比如:
<div id="colors">
<div id="red" >Red</div>
<div id="green" >Green</div>
<div id="blue" >Blue</div>
<div id="purple" >Purple</div>
<div id="gray" >Dark Slate Gray</div>
<div id="olive" >Olive</div>
</div>
document.getElementById("colors").childNodes[i].setAttribute('ng-hide','isHidden');
如果你使用angular或javascript并不重要,但请分析,因为我是一个新手。由于
使用ng-repeat如何?比如:
<div id="color.id" ng-repeat="color in colors" ng-hide="color.hide">{{ color.name }}</div>
你的模型看起来像:
$scope.colors = [
{ id: 'red', name: 'Red', hide: true },
{ id: 'green', name: 'Green', hide: true },
...
];
这取决于你所说的"与angular兼容"是什么意思。如果您正在使用该框架,那么为什么不完全利用它的MVC模式呢?
这将工作(它很简单)
var colors = document.getElementById("colors").children;
Array.prototype.forEach.call(colors,function (color, i, a) {
color.setAttribute('data:ng-hide', 'hidden');
})
相关文章:
- Angular附加父属性值
- 通过jQuery添加ng样式属性,angular不更新
- 将输入值设置为ng模型属性[Angular]时出现问题
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- http/rxjs catch回调中的Angular 2重定向导致TypeError:无法读取属性'订阅'
- 无法访问Angular Directive模板函数中的属性实际值
- 他们是如何使用angular/jqLite find()方法按属性名称和值选择元素的?ng conf 2015
- 具有{{}}指令属性的Angular
- 使用模板后,使用Angular获取元素属性值
- Angular 2 beta16无法读取属性'MinFreeShipping'的未定义
- Angular 2:在OnInit期间设置的属性在模板上未定义
- 如何通过 Javascript 注入访问 Angular 属性
- 用Angular属性装饰纯HTML
- 自定义指令中Angular属性的困惑
- 在ng-bind-html中绑定ng-click::在HTML中绑定Angular属性
- 可能的Angular属性指令错误
- 防止在模板中渲染angular属性指令
- 在angular引导之后添加angular属性
- 用javascript给子节点添加angular属性
- Angular属性指令——在当前指令下面添加一个ng-repeat