2013-09-25 29 views
0

我有幾個綁定到不同模型字段的輸入,如model.amodel.b,我需要向服務器發送請求以獲取自動完成數據。所以兩者的邏輯都是一樣的。 我想爲每個指令添加ng-change="changeHandler()"指令。但在changeHandler()裏面我需要得到輸入值 - 如何正確地做到這一點?我不能只是採取一些模型領域,因爲我有兩個領域相同的代碼。angularjs將同一個偵聽器綁定到不同的輸入,如何獲得輸入值

回答

1

傳遞型號向變化函數作爲參數:

<input type='text' ng-model='testinput' ng-change='changeHandler(testinput)'/> 
1

您可以在指令包這一切了,這將有機會獲得scope.model.a或者你可以像下面這樣做:

ng-change="chanageHandler(model.a)" ng-model="model.a"

2

如果你想做到這一點沒有發射過一個GET對每一個變化的網絡API,你必須變得更加複雜一點。

設置一個$注視model.amodel.b(或兩者)

在$表處理程序,通過無極拉自動完成結果,這看起來有點像這樣:

myModule.factory('HelloWorld', function($q, $timeout) { 

    var getMessages = function() { 
    var deferred = $q.defer(); 

    $timeout(function() { 
     deferred.resolve(['Hello', 'world!']); 
    }, 2000); 

    return deferred.promise; 
    }; 

    return { 
    getMessages: getMessages 
    }; 

}); 

// from: http://markdalgleish.com/2013/06/using-promises-in-angularjs-views/ 

然後將自動完成綁定到Promise的結果。

你還需要去抖更改,這SO後可能會有幫助:How to write a debounce service in AngularJS

我覺得這個博客帖子可能會幫助:http://www.grobmeier.de/angular-js-autocomplete-and-enabling-a-form-with-watch-and-blur-19112012.html#.UkMBIB1Dsak

相關問題