【发布时间】:2014-07-22 12:18:53
【问题描述】:
我有一个指令,其中$scope.awards 在加载时为空:
.directive('awardNavBar', function () {
// Directive used to display a badge.
return {
restrict: 'E',
scope: {
awards: '='
},
replace: true,
templateUrl: "/static/html/partials/directives/awardNavBar.html",
controller: function ($scope) {
console.log($scope.awards)
}
}
})
但是,当用户单击时,我的控制器会触发调用并更新 $scope.awards 的内容:
.controller("awardController", ['$scope', '$rootScope', 'Restangular', "$q", "$location", "TokenRestangular",
function ($scope, $rootScope, Restangular, $q, $location, TokenRestangular) {
$scope.updateAwardScope = function () {
resource = TokenRestangular.all('award');
resource.getList()
.then(function (awards) {
$scope.awards = awards;
})
}
}])
我的问题是指令 scope.awards 保持空白并且永远不会更新。
有没有办法从控制器调用指令并更新它的范围?
我试过了:
$scope.$apply() 但得到错误:
[$rootScope:inprog] http://errors.angularjs.org/1.2.19/$rootScope/inprog?p0=%24digest
这是我的html:
首先是点击事件:
<div ng-controller="awardController">
<div class="btn-group pull-right" >
<div ng-click="toggle('rightSidebar'); updateAwardScope()" class="btn btn-navbar">
<i class="fa fa-comment"></i> Chat
</div>
</div>
然后是我的指令:
<div ng-controller="awardController">
<award-nav-bar awards="awards"></award-nav-bar>
</div>
【问题讨论】:
-
尝试
console.log(awards)告诉我们出现了什么。 -
显示您的 html 绑定。
-
@DaniloValente 我所有的对象:[Object, Object, count: 2, next: null, previous: null, route: "award", getRestangularUrl: function...]
-
@Spike 太棒了。现在按照 Chandermani 的建议,请出示您的 HTML 绑定。
标签: javascript angularjs