如果我创建两个 div,都由同一个控制器控制,Angular 的控制器似乎停止更新我的视图。
我已经整理了一个简单的例子来证明这一点。在 JSFiddle 上查看示例是最简单的,但我也在下面发布代码。
HTML
<div ng-app='App'>
<div ng-controller="MyCtrl">
<form>
<input type="text" ng-model="search.query"></input>
<button ng-click="search.submit()">Submit</button>
</form>
</div>
<div ng-controller="SomeOtherCtrl">
{{sampleText}}
</div>
<div ng-controller="MyCtrl">
<button ng-click="search.reset()">Reset Form</button>
</div>
</div>
JS
var app = angular.module('App',[]);
function MyCtrl($scope)
{
$scope.search = {
query : 'foobar',
submit : function() {
this.query = 'Submitted';
console.log(this.query);
},
reset : function() {
console.log('resetting');
this.query = '';
}
};
}
function SomeOtherCtrl($scope) {
$scope.sampleText = 'other controller text';
}
提交按钮工作正常,但是当我单击重置按钮时,我看到resetting
登录控制台,但我的视图(表单输入)没有更新。
为什么会这样?在我正在进行的当前项目中,我被迫这样做,因为介于两者之间的某些 HTML 属于另一个控制器。我该如何解决这个问题?