2015-09-04 113 views
0

我遇到$ scope有點麻煩$ watch。這種情況是我用這個漂亮的插件來創建一個下拉: http://wenzhixin.net.cn/p/multiple-select/docs/angularjs觀看jquery指令值

在我看來文件

,我有:

<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

如果我想冒險,我想我會說,你的jquery更改函數不在角度摘要週期。

要實現你的功能,我會建議使用NG-模式在您選擇的標籤,並保持一個手錶上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); 
}) 
+0

謝謝@Tarun!你能否給出一些提示如何實現ng模型功能? – user2528576

+0

我已經在答案中顯示了它?那就是你所要做的。如果你卡住 –

+0

實際上我嘗試ng-model,但它obj.hvalue不會改變,也創建一個plunker。不知道多選插件是否支持這個功能... – user2528576