Javascript 如何让ng repeat在共享$scope更改时重新渲染?
我有三个控制器从一个包含数据的主控制器继承。我用一个函数调用表示每个ng repeat中的数组,我猜这就是列表在模型更改后不更新的原因 其他信息:为了让您了解模型,主题嵌套在组中,规则嵌套在主题中。因此,当我选择一个组时,我只想显示该组的主题,当我选择一个主题时,我只想显示该主题的规则 知道为什么当选定的组/主题更改时列表不会重新呈现吗 (选定的类会在单击时更新,因此我知道它正在启动。) 以下是HTML:Javascript 如何让ng repeat在共享$scope更改时重新渲染?,javascript,angularjs,Javascript,Angularjs,我有三个控制器从一个包含数据的主控制器继承。我用一个函数调用表示每个ng repeat中的数组,我猜这就是列表在模型更改后不更新的原因 其他信息:为了让您了解模型,主题嵌套在组中,规则嵌套在主题中。因此,当我选择一个组时,我只想显示该组的主题,当我选择一个主题时,我只想显示该主题的规则 知道为什么当选定的组/主题更改时列表不会重新呈现吗 (选定的类会在单击时更新,因此我知道它正在启动。) 以下是HTML: <div ng-controller="DataCtrl"> &l
<div ng-controller="DataCtrl">
<div ng-controller="GroupCtrl">
<nav>
<h4>Groups</h4>
<ul ng-repeat="group in getGroups()">
<li><a href="#" ng-click="selectGroup($index)"
ng-class="selectedGroupClass($index)">{{group.name}}</a></li>
</ul>
</nav>
</div>
<div ng-controller="TopicCtrl">
<ul ng-repeat="topic in getTopics()">
<li><a href="" ng-click="selectTopic($index)"
ng-class="selectedTopicClass($index)">{{topic.name}}</a></li>
</ul>
</div>
<div ng-controller="RuleCtrl">
<ul ng-repeat="rule in getRules()">
<li ng-click="selectRule($index)"
ng-class="selectedRuleClass($index)">{{rule.text}}</li>
</ul>
</div>
</div>
</div>
您正在覆盖子控制器中的绑定,这可以通过将范围变量放入对象中轻松解决。确保修复你的参考资料,它就会工作
$scope.my={selectedGroup:0,selectedTopic:0,selectedRule:0}代码>
干杯您正在覆盖子控制器中的绑定,通过将范围变量放入对象中可以轻松解决此问题。确保修复你的参考资料,它就会工作
$scope.my={selectedGroup:0,selectedTopic:0,selectedRule:0}代码>
干杯您正在覆盖子控制器中的绑定,通过将范围变量放入对象中可以轻松解决此问题。确保修复你的参考资料,它就会工作
$scope.my={selectedGroup:0,selectedTopic:0,selectedRule:0}代码>
干杯您正在覆盖子控制器中的绑定,通过将范围变量放入对象中可以轻松解决此问题。确保修复你的参考资料,它就会工作
$scope.my={selectedGroup:0,selectedTopic:0,selectedRule:0}代码>
干杯Dan Doyon在实际问题上击败了我,但我想补充以下内容
您将控制器用作数据控制器的想法并不是真正的角度方式:控制器是大多数视图控制器。在您的情况下,我会将DataCtrl重写为服务,并在需要时将其注入(视图)控制器中。这允许您将$scope变量绑定到服务变量,以保持所有内容的更新
app.controller('MyCtrl', ['$scope', 'DataService', function ($scope, DataService) {
$scope.varThatNeedsData = DataService.data;
}]);
// Init is intended to be used for the resolve property in the $routeProvider.
app.service('DataService', ['$http', function ($http) {
var self = this;
self.data = {};
self.init = function () {
var deferred = $q.defer();
$http.get('data/url').then(function (response) {
self.data = response.data;
deferred.resolve();
});
return deferred.promise();
};
return self;
}]);
Dan Doyon在实际问题上击败了我,但我想补充以下内容
您将控制器用作数据控制器的想法并不是真正的角度方式:控制器是大多数视图控制器。在您的情况下,我会将DataCtrl重写为服务,并在需要时将其注入(视图)控制器中。这允许您将$scope变量绑定到服务变量,以保持所有内容的更新
app.controller('MyCtrl', ['$scope', 'DataService', function ($scope, DataService) {
$scope.varThatNeedsData = DataService.data;
}]);
// Init is intended to be used for the resolve property in the $routeProvider.
app.service('DataService', ['$http', function ($http) {
var self = this;
self.data = {};
self.init = function () {
var deferred = $q.defer();
$http.get('data/url').then(function (response) {
self.data = response.data;
deferred.resolve();
});
return deferred.promise();
};
return self;
}]);
Dan Doyon在实际问题上击败了我,但我想补充以下内容
您将控制器用作数据控制器的想法并不是真正的角度方式:控制器是大多数视图控制器。在您的情况下,我会将DataCtrl重写为服务,并在需要时将其注入(视图)控制器中。这允许您将$scope变量绑定到服务变量,以保持所有内容的更新
app.controller('MyCtrl', ['$scope', 'DataService', function ($scope, DataService) {
$scope.varThatNeedsData = DataService.data;
}]);
// Init is intended to be used for the resolve property in the $routeProvider.
app.service('DataService', ['$http', function ($http) {
var self = this;
self.data = {};
self.init = function () {
var deferred = $q.defer();
$http.get('data/url').then(function (response) {
self.data = response.data;
deferred.resolve();
});
return deferred.promise();
};
return self;
}]);
Dan Doyon在实际问题上击败了我,但我想补充以下内容
您将控制器用作数据控制器的想法并不是真正的角度方式:控制器是大多数视图控制器。在您的情况下,我会将DataCtrl重写为服务,并在需要时将其注入(视图)控制器中。这允许您将$scope变量绑定到服务变量,以保持所有内容的更新
app.controller('MyCtrl', ['$scope', 'DataService', function ($scope, DataService) {
$scope.varThatNeedsData = DataService.data;
}]);
// Init is intended to be used for the resolve property in the $routeProvider.
app.service('DataService', ['$http', function ($http) {
var self = this;
self.data = {};
self.init = function () {
var deferred = $q.defer();
$http.get('data/url').then(function (response) {
self.data = response.data;
deferred.resolve();
});
return deferred.promise();
};
return self;
}]);
可能函数没有被重新计算,因为函数调用中没有参数更改。尝试将索引作为参数传递。例如:ng repeat=“getRules中的规则(selectedGroup,selectedTopic)”
可能函数没有重新求值,因为函数调用中没有参数更改。尝试将索引作为参数传递。例如:ng repeat=“getRules中的规则(selectedGroup,selectedTopic)”
可能函数没有重新求值,因为函数调用中没有参数更改。尝试将索引作为参数传递。例如:ng repeat=“getRules中的规则(selectedGroup,selectedTopic)”
可能函数没有重新求值,因为函数调用中没有参数更改。尝试将索引作为参数传递。例如:ng repeat=“getRules中的规则(selectedGroup,selectedTopic)”
ah!就这样!我只是把这当作一个常见的问题来读,但并没有把二和二放在一起。谢谢啊!!就这样!我只是把这当作一个常见的问题来读,但并没有把二和二放在一起。谢谢啊!!就这样!我只是把这当作一个常见的问题来读,但并没有把二和二放在一起。谢谢啊!!就这样!我只是把这当作一个常见的问题来读,但并没有把二和二放在一起。谢谢尽管丹是对的,但我还是要为他如此乐于助人而投票。谢谢你的提示。使用控制器拉入数据总是让人觉得有点奇怪。@KG Christensen关于提供服务的问题,你完全正确,我有点懒,只解决核心问题。尽管丹是对的,但他还是为自己的帮助而投票。谢谢你的提示。使用控制器拉入数据总是让人觉得有点奇怪。@KG Christensen关于提供服务的问题,你完全正确,我有点懒,只解决核心问题。尽管丹是对的,但他还是为自己的帮助而投票。谢谢你的提示。使用控制器拉入数据总是让人觉得有点奇怪。@KG Christensen关于提供服务的问题,你完全正确,我有点懒,只解决核心问题。尽管丹是对的,但他还是为自己的帮助而投票。谢谢你的提示。它总是让人感觉到一种痛苦