我是第一次接触angularjs。面对下面这样的问题,我的标记是这样的:
<div class="data-list">
<ul ng-repeat="client in clients | orderBy:orderProp | filter:query">
<li><a ng-click="update(client)" data={{client.id}} href="#">{{client.name}}</a></li>
</ul>
</div>
<div class="clientId">
{{clientId}}
</div>
我的控制器是这样的:
function ClientListCtrl($scope, $http) {
$http.get('/dummy-data/clients.json', {
cache: false
}).success(function (data) {
$scope.clients = data.clients;
});
$scope.activeClient = {};
$scope.update = function (selectedClient) {
$scope.activeClient = angular.copy(selectedClient);
console.log($scope.activeClient);
}
console.log("after click");
console.log($scope.activeClient);
// for sorting list
$scope.orderProp = '-numberOfUsers';
}
我希望当用户点击“客户端名称”时,{{clientId}}
会更新,但作用域会自动更新它。并返回{}
(空白对象)。
点击clientName后如何获取{{clientId}}?
提前谢谢。
发布于 2013-05-14 22:21:22
您的控制器没有任何像clientId
这样的属性,并且您的ng-repeat
的作用域仅限于<ul>
标记。
变化
<div class="clientId">
{{clientID}}
</div>
至
<div class="clientId">
{{activeClient}}
</div>
发布于 2013-05-14 22:22:45
您必须用{{activeClient.id}}
替换{{clientId}}
我根据你的代码做了一个简单的例子。
HTML
<div ng-app="myApp">
<div ng-controller="ClientListCtrl">
<ul ng-repeat="client in clients">
<li><a ng-click="update(client)" href="#">{{client.name}}</a></li>
</ul>
<div class="clientId"><br/>
Client id: {{activeClient.id}}
</div>
</div>
</div>
JavaScript
var myApp = angular.module('myApp',[]);
function ClientListCtrl($scope, $http) {
$scope.clients = [
{"id":1, "name": "client1"},
{"id":2, "name": "client2"},
{"id":3, "name": "client3"},
{"id":4, "name": "client4"},
{"id":5, "name": "client5"},
{"id":6, "name": "client6"}
];
$scope.activeClient = {};
$scope.update = function(selectedClient) {
$scope.activeClient = angular.copy(selectedClient);
}
}
请参阅this jsfiddle
https://stackoverflow.com/questions/16544827
复制相似问题