... ...AngularJS - 如何將html屬性變量值傳遞給指令?
UPDATE
HTML
<my-directive ng-repeat="item in items = (data | filter: {isExists: true})">
something
</my-directive>
<my-second-directive counter="{{items.length}}"></my-second-directive>
JS
angular.module('directives')
.directive('myDirective', function() {
...
})
.directive('mySecondDirective', function() {
return {
restrict: 'EA',
transclude: false,
replace: true,
scope: {
counter: '@'
},
template: '',
link: function (scope, element, attrs) {
alert(scope.counter);
}
});
對不起,我沒有描述我的闕好的。我的第一個指令應該是ngRepeated,帶過濾器。但在我的第二個指令中,我想允許顯示一個計數器,第一個指令當前有多少實例化,因爲用戶將能夠添加和刪除實例。所以我想通過第二個指令飛行來獲取items.length的值。但是第二個指令的link()方法在ngRepeat之前被觸發,所以計數器的值將是一個空字符串。
預先感謝
UPDATE 2
.directive('cardGroupHeader', function($templateCache){
return {
restrict: 'EA',
transclude: true,
replace: true,
require: '^cardGroup',
scope: {
cbiscounter: '=?',
cbcounter: '=?',
cbisarrow: '@?'
},
template: $templateCache.get('card-group-header-tpl.html'),
link: function(scope, $element, $attrs, cardGroupController) {
scope.rowId = cardGroupController.getCurrentId();
console.log(scope.cbcounter);
scope.toggle = function() {
cardGroupController.toggle(scope.rowId)
}
angular.element(document).ready(function() {
console.log(scope.cbcounter);
});
scope.$watch('scope.cbcounter', function (n, o) {
if(n && n != o) {
console.log(n);
}
});
//scope.cbcounter++;
}
};
})
HTML
<card-group-header cbiscounter="true" cbarrow="true" cbcounter="data.length">Waiting for Approval</card-group-header>
<card-group-row cbCollapsed="false">
<card ng-repeat="approveItem in data = (approveItems | filter: {isApproved: false, isRejected: false})">
TEMPLATE
$templateCache.put('card-group-header-tpl.html', '<div class="card-group-header" ng-click="toggle()"><span ng-transclude></span><span class="card-group-counter" ng-if="cbiscounter">{{cbcounter}}</span></div>');
WHE n我將data.length
更改爲2
,這個轉移良好。如果我使用data.length
,則scope.cbcounter
總是未定義。在2
的情況下,我找回了console.log(scope.cbcounter);
你嘗試用兩種方法結合,如圖我的答案? – lvarayut