2015-10-20 46 views
0

HTML:Angular:如何在select(jQuery-UI combobox選擇)上添加事件更改?

<select style='width:60px;' combobox> 
    <option ng-repeat='item in sizePriceWeighArr' value='{{ item.id }}' price='{{ item.price }}' weight='{{ item.weight }}' size='{{ item.size }}'>{{ item.size }}</option> 
</select> 

JS:

.controller('productController', ['$scope', '$location', '$http', '$q', '$window', '$stateParams', function($scope, $location, $http, $q, $window, $stateParams) { 
    // Some code here to form array of products 
    $scope.sizePriceWeighArr = productObj.sizePriceWeigh; 
}]) 
.directive('combobox', function() { 
    return { 
     restrict: 'A', 
     link: function($scope, element, attrs) { 
      $(element).combobox();        
     } 
    } 
}) 

在指令中我形成的jQuery UI的下拉框中選擇。但我需要以某種方式捕獲選擇,控制器或指令中的更改事件。

回答

0

您使用目前是選擇,那麼爲什麼不直接使用ngChange:

<select style='width:60px;' combobox ng-change="changeFunction()"> 
<option ng-repeat='item in sizePriceWeighArr' value='{{ item.id }}' 
price='{{ item.price }}' weight='{{ item.weight }}' size='{{ item.size }}'>  
{{ item.size }}</option> 
</select> 

JS:

.controller('productController', ['$scope', '$location', '$http', '$q', '$window', '$stateParams', function($scope, $location, $http, $q, $window, $stateParams) { 
// Some code here to form array of products 
$scope.sizePriceWeighArr = productObj.sizePriceWeigh; 

function changeFunction(){ 
    //your code. 
} 
}]) 
.directive('combobox', function() { 
return { 
    restrict: 'A', 
    link: function($scope, element, attrs) { 
     $(element).combobox();        
    } 
} 
}) 
+0

錯誤:[$編譯:ctreq] http://errors.angularjs.org /1.4.6/$compile/ctreq?p0=ngModel&p1=ng更改 –

+0

問題是:如果我添加ng-change + ng-model它不起作用becouse jquery-ui combobox插件生成新的html並在選擇顯示上設置:none樣式。如果您期望瀏覽器上的元素並刪除display:none樣式,則會在頁面上看到select。當你嘗試使用生成jquery-ui組合框插件的html來改變值時,你會看到在本地選擇值中也改變了但是ng-change函數不能執行。 –