编译模板时出现代码气味
Code smell in compiling the template
在下面的代码中,
<!DOCTYPE html>
<html ng-app="app14" ng-cloak>
<head>
<meta charset="UTF-8">
<title> Angular built-in services</title>
<style>
[ng':cloak], [ng-cloak], .ng-cloak{
display: none;
}
</style>
</head>
<body>
<!-- Using $angular service-->
<p get-player-info></p>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular-sanitize.js"></script>
<script type="text/javascript" src="js/exam14.js"></script>
</body>
</html>
var app14 = angular.module('app14', ['ngSanitize']);
function MainController($window, $location, $interval, $log, $exceptionHandler, $sanitize){
/***** For $compile service ********/
this.players = [
{name: "Barry Bonds", avg: 0.298, hr: 762, obp: 0.444},
{name: "Hank Aaron", avg: 0.305, hr: 755, obp: 0.374},
{name: "Babe Ruth", avg: 0.342, hr: 714, obp: 0.474},
{name: "Ted Williams", avg: 0.344, hr: 521, obp: 0.482}
];
}
app14.controller('mainCtrl', MainController);
/***** using $compile service ********/
app14.directive("getPlayerInfo", function($compile){
return function(scope, element, attrs){
var playerList ="<ul><li ng-repeat='player in o.players'>{{player.name}}</li></ul>";
var listElement = angular.element(playerList);
var compileFunction = $compile(listElement);
compileFunction(scope);
element.append(listElement);
}
});
getPlayerInfo
指令(如下所示)中有代码气味
var playerList ="<ul><li ng-repeat='player in o.players'>{{player.name}}</li></ul>";
我们在自定义指令中明确使用了o.players
。
如何解决此代码气味?
请使用指令的template
选项来加载html,并使用隔离作用域和=
(双向绑定)从指令属性传递players
值。通过将值传递给指令的players
属性,可以去掉父控制器的控制器别名。
标记
<p get-player-info players="o.players"></p>
指令
app14.directive("getPlayerInfo", function($compile){
return {
template: '<ul><li ng-repeat='player in players'>{{player.name}}</li></ul>',
scope: {
players: '='
},
link: function(scope, element, attrs) {
//do manipulate DOM from here.
}
}
});
相关文章:
- 使用脚本#编译代码(独立)
- 我的所有代码在使用Webpack编译时都会运行两次
- Webpack通过npm将代码拆分为单独的模块,以及如何编译es6
- 为什么Java代码需要编译,而JavaScript代码不需要
- 编译并运行Exploit DB代码
- 编译角度代码以便能够执行内部html操作
- 在编译jquery移动代码时,Script标记在Eclipse Phonegap中不起作用
- 编译模板时出现代码气味
- 为什么我的代码可以在chrome上工作,而不是一次使用cordova编译
- 如何使ng-bind-html编译angularjs代码
- 哪个核心代码负责编译此插件中的 JavaScript
- 使用javascript HotRuby.js时,Ruby代码在哪里编译
- 使用$routeProvider进行动态路由和编译角度代码
- AngularJS从文件编译和渲染HTML代码
- AngularJS-是否可以从代码中编译和链接模板
- 如何在节点sass编译sass代码时抛出自定义错误
- 运行时代码编译
- 将node.js代码编译为不需要的代码
- 将Rails中的所有JS代码编译成一个匿名函数
- 如何将ES6代码编译为浏览器的ES5