angularjs观看jquery指令值

时间:2015-09-04 03:01:54

标签: jquery angularjs drop-down-menu watch

我在使用$ 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函数永远不会执行。知道为什么会这样吗?

非常感谢!

1 个答案:

答案 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);
})