爲題狀態,我怎麼觸發時採取的措施裏面如何觸發角解析器沒有在現場
modelController.$parsers(...)
的地方,而無需用戶輸入......我能想到的唯一途徑輸入查詢什麼在他們包裹在函數內部並調用它,但有沒有更好的方式來觸發
**//pseudo
$(modelController).trigger('just got dirty');**
我需要這樣做的原因是觸發輸入字段來驗證自己的提交頁面。
爲題狀態,我怎麼觸發時採取的措施裏面如何觸發角解析器沒有在現場
modelController.$parsers(...)
的地方,而無需用戶輸入......我能想到的唯一途徑輸入查詢什麼在他們包裹在函數內部並調用它,但有沒有更好的方式來觸發
**//pseudo
$(modelController).trigger('just got dirty');**
我需要這樣做的原因是觸發輸入字段來驗證自己的提交頁面。
我已經找到一種方法來解決這個問題 - 只需要調用與模型值解析器:
angular.forEach(ngModel.$parsers, function (parser) {
parser(ngModel.$viewValue);
});
它非常簡單,它似乎是最正確的解決方案。
這個問題是實際的,我也...因爲我解決這個問題:
var triggerParsers = function() {
var val = ngModel.$viewValue;
ngModel.$setViewValue(null);
ngModel.$setViewValue(val);
};
我相信答案是do element.trigger('change'); – user2167582 2014-08-20 16:49:19
我已經嘗試過使用element.trigger,但是這個技巧不起作用,這是因爲事件被觸發了,但是值沒有改變,因此angular不會啓動解析器。 – 2014-09-09 12:08:43
這對我來說非常合適(版本1.2.29) - 謝謝!爲什麼這個簡單的答案不會更廣泛?爲了稍微改進答案,使用原生'for'循環而不是'angular.forEach',檢查解析器的'name'屬性,並且只重新觸發你想要的而不是所有的東西(如果適用的話)和'break'循環一旦你觸發你想要的。但是,這些只是微觀優化。 – 2017-12-05 17:03:26