问题的出现原因是:ng-if指令会创建一个新的作用域,该作用域通过原型继承来自父作用域。因此,ng-model="cityIds"会更新这个新作用域中的cityIds。
解决方法是:在父作用域中使用一个对象,并从ng-model引用该对象。
例如,在控制器中定义:
$scope.data = {cityIds: null};
然后,在模板中引用该对象:
ng-model="data.cityIds"
这样可以确保始终处理父作用域的数据。
或者,使用'controller as'语法为控制器命名,并通过该名称访问模型。