我们说我有一个复选框和一个文本框。单击复选框,我在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)如何在不打字的情况下让它在我的情况下工作 文本框和过滤器开始工作。
答案 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';
}