[英]ng-repeat data switch based on click
您好我是Angular JS的新手
點擊時是否可以更改ng-repeat數據而不更改dom?
在此示例中-單擊“名稱”選項卡然后顯示“名稱”數組中的名稱列表時,與單擊“ ids”選項卡然后將內容替換為ID列表時相同
是否可以從具有相同dom元素的控制器進行管理?
<div class="select"><span class="active">Names</span> <span>ID</span></div>
<ul ng-app="myApp" ng-controller="testController">
<li ng-repeat="name in names">{{name.name}}</li>
</ul>
var myApp = angular.module('myApp', []);
myApp.controller('testController', function ($scope) {
$scope.names = [
{name : 'nameOne'},
{name : 'nameTwo'},
{name : 'nameThree'},
{name : 'nameFour'},
{name : 'nameFive'}
];
$scope.IDs = [
{id : 'idOne'},
{id : 'idTwo'},
{id : 'idThree'},
{id : 'idFour'},
{id : 'idFive'}
];
});
謝謝
您可以嘗試這樣的事情
<div class="select"><span class="active" ng-click="changeToName()">Names</span> <span ng-click="changeToID()">ID</span></div>
<ul ng-app="myApp" ng-controller="testController">
<li ng-repeat="name in myRepeat">{{ (name.name || name.id) }}</li>
</ul>
在控制器中
//default empty - but you could set it to a default like $scope.myRepeat = $scope.names;
$scope.myRepeat = [];
$scope.changeToName = function(){
$scope.myRepeat = $scope.names;
};
$scope.changeToID = function(){
$scope.myRepeat = $scope.IDs;
};
我只是在$scope.myRepeat
之間放置了另一個作用域變量ng-repeat數據,您可以使用一些單擊功能在其中切換數據。 您可以默認將其值包含$scope.names
或為空數組,這取決於您希望如何使用它。
字段-http : //jsfiddle.net/8s4afddv/2/
您可以執行以下操作:
<div class="select"><span class="active">Names</span> <span>ID</span></div>
<ul ng-app="myApp" ng-controller="testController">
<li ng-repeat="item in lists()">{{item[prop]}}</li>
</ul>
<button onclick="list = 'id'"> Click to change to ID <button/>
var myApp = angular.module('myApp', []);
myApp.controller('testController', function ($scope) {
$scope.prop = "name";
$scope.lists = function() {
var list;
if ($scope.list === "names") {
$scope.prop = "name";
list = [
{name : 'nameOne'},
{name : 'nameTwo'},
{name : 'nameThree'},
{name : 'nameFour'},
{name : 'nameFive'}
];
}
} else if ($scope.list === "id") {
$scope.prop = "id";
list = [
{id : 'idOne'},
{id : 'idTwo'},
{id : 'idThree'},
{id : 'idFour'},
{id : 'idFive'}
];
}
return list;
});
這就是我要做的。 如果我有更多的時間將id整個內容構建到它自己的指令中(頂部的按鈕仍然讓我感到困擾),但這應該可以讓您入門(因為我使用了angular,這已經有一段時間了,對不起!)
http://jsfiddle.net/8s4afddv/5/
var myApp = angular.module('myApp', []);
myApp.controller('testController', function ($scope) {
$scope.activeList = [];
$scope.change = function(t){
$scope.activeList = $scope[t];
};
$scope.names = [
{name : 'nameOne'},
{name : 'nameTwo'},
{name : 'nameThree'},
{name : 'nameFour'},
{name : 'nameFive'}
];
$scope.IDs = [
{id : 'idOne'},
{id : 'idTwo'},
{id : 'idThree'},
{id : 'idFour'},
{id : 'idFive'}
];
})
.directive('myList', function() {
return {
restrict: 'E',
transclude: true,
template: '<ul><li ng-repeat="name in activeList">{{ (name.name || name.id) }}</li></ul>'
};
});
HTML:
<div ng-app="myApp" ng-controller="testController">
<div class="select" ><span class="active" ng-click="change('names')">Names</span> <span ng-click="change('IDs')">ID</span></div>
<my-list>
</my-list>
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.