Я пытаюсь выполнить ng-repeat пользовательскую директиву, которая имеет атрибут, который должен измениться по итерации.ANgularjs: ng-repeat и вложенная пользовательская директива
Это мой HTML:
<div ng-controller="WalletsController as controller">
<bitcoin-address ng-repeat="bitcoin_label in controller.getWallets()" bitcoin-label="bitcoin_label"></bitcoin-address>
</div>
Это мой контроллер:
(function() {
var app = angular.module('wallets', [ ]);
app.controller(
"WalletsController",
function($scope, $http) {
this.wallets = [];
var controller = this;
this.getWallets = function() {
return controller.wallets;
};
$http.get("wallet_addresses").success(
function(data) {
for (var i = 0; i < data.length; i++) {
var curWallet = data[i];
$scope[curWallet.label] = {
label: curWallet.label,
address: curWallet.address,
balance: curWallet.balance
};
controller.wallets.push(curWallet.label);
}
}
);
});
app.directive(
'bitcoinAddress',
function() {
return {
restrict: 'E',
templateUrl: '../../resources/html/bitcoin-address.html',
scope: {
bitcoinLabel: '=',
}
};
}
);
})();
И это мой шаблон:
<div class="col-md-8 dashboardAddressCell dropdown-toggle" data-toggle="dropdown">{{bitcoinLabel.address}}</div>
Что происходит, что шаблон не может решить переменная bitcoinLabel. Я попытался указать постоянное значение, и шаблон работает. Я пришел к выводу, что я неправильно указываю атрибут bitcoin_label в разделе html. Я также пытался использовать {{bitcoin_address}}, но angularjs жалуется на это.
Я также попытался с помощью следующего кода HTML:
<div ng-controller="WalletsController as controller">
<!-- <tr><th>Indirizzo</th><th>Saldo</th><th></th>-->
<div ng-repeat="bitcoin_label in controller.getWallets()">
{{bitcoin_label}}
<bitcoin-address bitcoin-label="bitcoin_label"></bitcoin-address>
</div>
<bitcoin-address bitcoin-label="ciccio"></bitcoin-address>
</div>
Это не работает либо, но по крайней мере это показывает {} {} bitcoin_label значение.
Не должно быть 'controller.wallets.push ($ scope [curWallet.label]);'? – dfsq
Извините, что вы имеете в виду? Я думаю, что эта часть должна работать. На самом деле, если я включаю ' bitcoin-address>' в html-страницу и '$ scope ['ciccio'] = {адрес: 'hello'};' in контроллер, я вижу «привет». –
fcracker79
Я имею в виду, что ваш код должен быть 'controller.wallets.push ($ scope [curWallet.label])' not 'controller.wallets.push (curWallet.label);'. – dfsq