$scope在使用ng-if时不会更新。

23 浏览
0 Comments

$scope在使用ng-if时不会更新。

在Angular 1.3.x上,我创建了一个select输入框,在ng-change上调用一个函数。周围的div有一个ng-if语句。\n当我改变select字段时,ng-change函数被调用,并且$scope更新正确,但是$scope没有被更新。\n在移除ng-if语句后,$scope会被select输入框正确地更新。有人可以解释这个行为吗?

0
0 Comments

问题的出现原因是:ng-if指令会创建一个新的作用域,该作用域通过原型继承来自父作用域。因此,ng-model="cityIds"会更新这个新作用域中的cityIds。

解决方法是:在父作用域中使用一个对象,并从ng-model引用该对象。

例如,在控制器中定义:

$scope.data = {cityIds: null};

然后,在模板中引用该对象:

ng-model="data.cityIds"

这样可以确保始终处理父作用域的数据。

或者,使用'controller as'语法为控制器命名,并通过该名称访问模型。

0