我遇到以下代码的问题:
<tab heading="Topic Search">
<div data-ng-controller="AdminGridQuestionSubjectController">
<ng-include src="'/Content/app/admin/partials/grid-question-subject.html'"></ng-include >
</div>
<div>
在控制器中我有:
$scope.$watch('selectedSubject', function () {
if ($scope.selectedSubject != null) {
gridService.getTopicSelect($scope);
gridService.getQuestionStatusSelect($scope);
}
})
在包含的grid-question-subject.html视图中,我有:
<select
data-ng-disabled="subjects.length == 0"
data-ng-model="selectedSubject"
data-ng-options="item.id as item.name for item in subjects">
<option style="display: none" value="">Select Subject</option>
</select>
看起来手表不起作用,因为当我在视图中进行更改时,手表却没有 触发。这是因为在编译页面后加载了包含视图。
请注意,在将我的选择代码放入包含内容之前,一切正常。内联时一切正常:-(
任何人都可以告诉我如何解决这个问题。
答案 0 :(得分:5)
我还没有看到你完成的代码,但我很确定selectedSubject是一个原始类型。所以只需修改您的代码,如下所示。
选项-1更好的方法
In controller
$scope.data= { selectedSubject: '' };
$scope.$watch('data.selectedSubject', function () {
if ($scope.data.selectedSubject!= null) {
alert("changed");
}
})
and in template
<select
data-ng-disabled="subjects.length == 0"
data-ng-model="data.selectedSubject"
data-ng-options="item.id as item.name for item in subjects">
<option style="display: none" value="">Select Subject</option>
</select>
选项2只需更改模板
<select
data-ng-disabled="subjects.length == 0"
data-ng-model="$parent.selectedSubject"
data-ng-options="item.id as item.name for item in subjects">
<option style="display: none" value="">Select Subject</option>
</select>
原因:https://github.com/angular/angular.js/wiki/Understanding-Scopes