-1
A
回答
1
我已經改變了你的代碼了一點,我通過指令的html標記傳遞user
參數。
您可以在指令中包含使用scope
屬性所需的許多其他參數。你可以在這裏讀更多關於它的內容。 (http://docs.angularjs.org/guide/directive)
雖然你仍然需要使用$apply()
- 不知道爲什麼你想「擺脫」它。在指令中使用$ digest/$ apply可以讓Angular知道你在異步調用或任何DOM操作之後做出了更改。
它沒有意義,你不應該在控制器內部使用它。
此外,你可以刪除jQuery操作(如果你想)使用更多的AngularJS方法與ng-class
應用正確的類。 (http://docs.angularjs.org/api/ng.directive:ngClass)
你可以看到一個工作普拉克這裏(http://plnkr.co/edit/MKmFLKpyAC87UbNaV0ef?p=preview)
<!doctype html>
<html ng-app="myApp">
<head>
<meta charset="utf-8">
</head>
<style>
.active{
color:red;
}
</style>
<body>
<div ng-controller="myCtrl">
<ul>
<li data-ng-repeat="user in ns.users">
<div user="user" selected-user-box="{{user.id}}" class="box-select-user">
<h2>{{user.name}}</h2>
</div>
</li>
</ul>
<b>{{ns.test}}</b>
</div>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.angularjs.org/1.0.8/angular.min.js"></script>
<script>
var app = angular.module('myApp', []);
app.factory('Users',function(){
return [{id:1,name:'first'},{id:2,name:'second'},{id:3,name:'third'}]
});
app.directive('selectedUserBox', function() {
return {
restrict: 'A',
replace: true,
scope: {
user: '='
},
template:'<h2>{{user.name}}</h2>',
link: function(scope, element, attrs) {
element.bind('click', function() {
$(this).parent().parent().find('div').removeClass('active');
$('.box-select-user').removeClass('active');
$(this).addClass('active');
});
},
};
});
app.controller('myCtrl',function($scope,Users){
$scope.ns = {};
$scope.ns.users = Users;
});
</script>
</body>
</html>
相關問題
- 1. AngularJS:指令範圍與控制器範圍
- 2. 指令範圍並不控制器
- 3. angularjs限制指令範圍
- 4. 定製angularjs指令與範圍和NG控制器
- 5. 溝通指令/控制器和範圍
- 6. 從指令控制器訪問範圍
- 7. AngularJS控制器和指令範圍問題
- 8. 在AngularJS中綁定指令範圍與控制器
- 9. 從指令中更改控制器範圍值AngularJS
- 10. 在AngularJS中控制器和指令之間的共享範圍
- 11. angularjs控制器訪問指令範圍值
- 12. 將範圍值從指令傳遞到控制器 - AngularJS
- 13. 從指令AngularJs觸發控制器範圍
- 14. 指令/控制範圍,控制
- 15. Angularjs從控制器範圍內獲得的數據指令範圍
- 16. Angularjs指令的指令,並訪問設定範圍VAR在控制器
- 17. 角結合指令範圍控制器範圍
- 18. AngularJS控制器,而不是$ scope調用$應用在指令中
- 19. 範圍和指令AngularJs
- 20. AngularJS指令範圍繼承
- 21. AngularJS:指令和範圍
- 22. AngularJS隔離範圍指令
- 23. AngularJS - 範圍的指令
- 24. AngularJS:指令隔離範圍
- 25. 擴展指令範圍AngularJS
- 26. 隔離範圍指令:angularjs
- 27. 在控制器範圍內使用指令時不保留$ scope
- 28. 將角度指令範圍傳遞給指令控制器
- 29. AngularJS控制器 - 指令 - >從指令
- 30. Angularjs控制器指令
看來,在這個論壇上,你不應該問的改進/忠告^^ – Whisher