【发布时间】:2016-03-13 23:27:38
【问题描述】:
我一直在努力解决 angularJS $scope 问题。我有一个在控制器函数中更新的数组。根据我的控制台日志,其中的值确实发生了变化。但是,视图没有更新。这是sn-ps。
//array initialisation
$scope.fieldSuggestions = []
//modifying function
$scope.changeCurrentInput = function(fieldName, eye) {
for(var field in $scope.test){
console.log($scope.test[field].name)
if($scope.test[field].name === fieldName){
console.log($scope.test[field].values)
console.log("be4 update")
console.log($scope.fieldSuggestions)
$scope.fieldSuggestions = $scope.test[field].values;
console.log("after update")
console.log($scope.fieldSuggestions)
}
}
};
//view
<div ng-repeat="choice in fieldSuggestions">
<button class="button button-positive">{{choice}}</button>
</div>
更多细节...
我认为这可能是相关的。我有一个父视图和几个子视图。这些路由中的每一个都使用相同的控制器。即:routes.js 中的属性控制器对所有人都是一样的。调用修改函数的按钮在子视图中,而未更新的ng-repeat在父视图中。
【问题讨论】:
-
如果在列表中推送或拼接会发生什么?那么视图更新了吗?
-
@Patrick 不,视图也不会通过推送更新。
-
您是否正在更改摘要周期中的值?您如何以及何时调用该函数?
-
@Patrick 我通过 ng-click 按钮调用该函数。请参阅我在问题中发布的额外详细信息。
-
嗯,好的。如果您要“共享”变量,则应使用服务,以便在控制器之间获得相同的变量引用。如果它们相互继承,则需要将变量放在“模型”变量中,即
$scope.model = { fieldSuggestions: [] }以避免variable shadowing
标签: javascript angularjs