首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angularjs作用域更新问题

Angularjs作用域更新问题
EN

Stack Overflow用户
提问于 2013-05-14 21:41:01
回答 2查看 429关注 0票数 1

我是第一次接触angularjs。面对下面这样的问题,我的标记是这样的:

代码语言:javascript
运行
复制
<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>

我的控制器是这样的:

代码语言:javascript
运行
复制
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}}?

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-05-14 22:21:22

您的控制器没有任何像clientId这样的属性,并且您的ng-repeat的作用域仅限于<ul>标记。

变化

代码语言:javascript
运行
复制
<div class="clientId">
   {{clientID}}
</div>

代码语言:javascript
运行
复制
<div class="clientId">
   {{activeClient}}
</div>
票数 0
EN

Stack Overflow用户

发布于 2013-05-14 22:22:45

您必须用{{activeClient.id}}替换{{clientId}}

我根据你的代码做了一个简单的例子。

HTML

代码语言:javascript
运行
复制
<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

代码语言: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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16544827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档