我在使用$ scope时遇到了一点麻烦。$ watch。情况是我使用这个漂亮的插件来创建下拉列表: http://wenzhixin.net.cn/p/multiple-select/docs/
在我的视图文件中,我有:
<select id="hid" multiple="multiple" name="hname">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
在我的js控制器文件中:
$('#hid').change(function() { $scope.hvalue = $(this).val() }).multipleSelect({ width: '20%', selectAll:false })
$scope.testwatch = []
$scope.$watch(function() {
return $scope.hvalue
}, function(value) {
if(value) {
$scope.testwatch = $scope.hvalue
}
}, true)
问题是当用户更改了下拉列表时,会修改$ scope.hvalue。但是,$ watch函数永远不会执行。知道为什么会这样吗?
非常感谢!
答案 0 :(得分:0)
如果我有危险,我想我会说,你的 jquery更改功能不在角度摘要周期中。
为了实现您的功能,我建议您在选择标签上使用 ng-model 并密切关注该ng模型:
<强> HTML:强>
<select id="hid" multiple="multiple" name="hname" ng-model="obj.hvalue">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<强>控制器:强>
$scope.obj = {};
$scope.obj.hvalue = '';
$scope.$watch('obj.hvalue', function(newval, oldval) {
console.log(newval);
})