手动触发javascript事件和触发默认事件之间的区别

时间:2016-04-21 05:18:28

标签: javascript jquery angularjs

我们说我有一个复选框和一个文本框。单击复选框,我在textBox中设置了一些值。

AngularJs实施

<input type="checkbox" ng-model="filterPrivateDocModel" ng-click="filterPrivateDoc(filterPrivateDocModel)">
<input st-search="target" ng-model="text" ng-change="setVal()"/>
$scope.filterPrivateDoc=function(val) {
  if (val) {
    angular.element('[ng-model="text"]').change();
  }
}

$scope.setVal=function() {
  angular.element('[ng-model="text"]').focus();
  $scope.text = 'Private';
}

它在点击checkBox时正确设置textBox的值为'Private',但它不会过滤该值,尽管我试图调用 onavascript javascript事件(使用ng-手动改变角度但仍不起作用。

但是当我开始在文本框中输入任何字符时,它会触发setValue(javascript的onchange事件)并过滤数据。为什么??

所以我的问题是

(1)手动调用javascript onchange有什么区别        事件和默认触发器

(2)如何在不打字的情况下让它在我的情况下工作          文本框和过滤器开始工作。

1 个答案:

答案 0 :(得分:0)

简单的答案是你不这样做。整个想法是你完全分离数据模型,控制代码和视图。您的解决方案应该让框架(角度)处理模型更改时刷新视图,因此使用模型来触发刷新。

<input type="checkbox" ng-model="filterPrivateDocModel" ng-click="filterPrivateDoc(filterPrivateDocModel)">
<input st-search="target" ng-model="text" ng-change="setVal()"/>

$scope.filterPrivateDoc=function(val) {
  if (val) {
    setTextVal($scope);
  }
}

$scope.setVal=function() {
  angular.element('[ng-model="text"]').focus();
  setTextVal($scope);
}

function setTextVal($scope) {
  $scope.text = 'Private';
}