2017-07-14 25 views
0

我想爲jQuery創建自定義的角度下拉列表,並且在調用jQuery .val(newValue)後無法更新角度模型。爲什麼我使用jQuery?因爲在一些頁面中,我有幾個下拉菜單,大約有500個元素,純角度渲染的效果非常慢。這是指導我的鏈接功能:JQuery與angularjs ng-model的集成

(scope, element) => { 
    const parent = $(element); 
    const field = parent.find('input'); 
    const list = parent.find('ul'); 
    scope.options.map(item => list.append(
    $('<li>') 
     .text(item.text) 
     .addClass(item.disabled && 'disabled') 
     .data({ 
     value: item.value, 
     disabled: item.disabled 
     }) 
     .click(function() { 
     const data = $(this).data(); 
     if (!data.disabled) { 
      field 
      .val(data.value) 
      .trigger('change'); 
      // also tried => scope.model = data.value; 
     } 
     }) 
)); 
} 

這是模板:

<div class="dropdown"> 
    <input 
    type="text" 
    readonly 
    placeholder="Select item" 
    ng-model="model" 
    ng-change="change"> 
    <ul></ul> 
</div> 

這裏的計算器我發現應該是.trigger('change')叫,但它不利於角度改變模式。我怎樣才能更新角模型?

+2

誰願意下使用一滴在它500個值? – Jorg

回答

0

我找到答案

scope.$parent.$apply(() => { 
    scope.model = data.value; 
}); 

而不是

field 
    .val(data.value) 
    .trigger('change');