Angularjs var params={event:event,el:element}; 处理程序({params:params}); }); }); } }; }]);
该指令可以多次使用,它使用自己的作用域,不依赖于父作用域。您还可以为handler函数提供一些参数。将使用范围对象调用处理程序函数,该对象在更改输入时处于活动状态。Angularjs var params={event:event,el:element}; 处理程序({params:params}); }); }); } }; }]);,angularjs,Angularjs,该指令可以多次使用,它使用自己的作用域,不依赖于父作用域。您还可以为handler函数提供一些参数。将使用范围对象调用处理程序函数,该对象在更改输入时处于活动状态。 $apply每次调用更改事件时都会更新您的模型,这是最简单的jqLite版本 JS: HTML: 最简单的角度jqLite版本 JS: HTML: 我扩展了@Stuart Axon为文件输入添加双向绑定的想法(即允许通过将模型值重置回null来重置输入): 我扩展了@Stuart Axon为文件输入添加双向绑定的想法(即允许通过将模
$apply每次调用更改事件时都会更新您的模型,这是最简单的jqLite版本 JS: HTML:
最简单的角度jqLite版本 JS: HTML:
我扩展了@Stuart Axon为文件输入添加双向绑定的想法(即允许通过将模型值重置回null来重置输入):
我扩展了@Stuart Axon为文件输入添加双向绑定的想法(即允许通过将模型值重置回null来重置输入):
太完整的解决方案基于:
`onchange="angular.element(this).scope().UpLoadFile(this.files)"`
一种隐藏输入字段并用图像替换的简单方法,这里是解决方案之后的一种方法,该方法也需要对angular进行黑客攻击,但可以完成此任务[TriggerEvent未按预期工作]
解决方案:
- 将输入字段置于display:none[输入字段存在于DOM中但不可见]
- 把你的照片放在后面 在图像上,使用nb-click()激活一个方法
var tmpl = '<input type="file" id="{{name}}-filein"' +
'onchange="angular.element(this).scope().UpLoadFile(this.files)"' +
' multiple accept="{{mime}}/*" style="display:none" placeholder="{{placeholder}}">'+
' <img id="{{name}}-img" src="{{icon}}" ng-click="clicked()">' +
'';
// Image was clicked let's simulate an input (file) click
scope.inputElem = elem.find('input'); // find input in directive
scope.clicked = function () {
console.log ('Image clicked');
scope.inputElem[0].click(); // Warning Angular TriggerEvent does not work!!!
};
var tmpl=''+
' ' +
'';
//图像已单击让我们模拟输入(文件)单击
scope.inputElem=elem.find('input');//在指令中查找输入
scope.clicked=函数(){
console.log(“单击图像”);
scope.inputElem[0]。单击();//警告角度触发器事件不工作!!!
};
太完整的解决方案基于:
`onchange="angular.element(this).scope().UpLoadFile(this.files)"`
一种隐藏输入字段并用图像替换的简单方法,这里是解决方案之后的一种方法,该方法也需要对angular进行黑客攻击,但可以完成此任务[TriggerEvent未按预期工作]
解决方案:
- 将输入字段置于display:none[输入字段存在于DOM中但不可见]
- 把你的照片放在后面 在图像上,使用nb-click()激活一个方法
var tmpl = '<input type="file" id="{{name}}-filein"' +
'onchange="angular.element(this).scope().UpLoadFile(this.files)"' +
' multiple accept="{{mime}}/*" style="display:none" placeholder="{{placeholder}}">'+
' <img id="{{name}}-img" src="{{icon}}" ng-click="clicked()">' +
'';
// Image was clicked let's simulate an input (file) click
scope.inputElem = elem.find('input'); // find input in directive
scope.clicked = function () {
console.log ('Image clicked');
scope.inputElem[0].click(); // Warning Angular TriggerEvent does not work!!!
};
var tmpl=''+
' ' +
'';
//图像已单击让我们模拟输入(文件)单击
scope.inputElem=elem.find('input');//在指令中查找输入
scope.clicked=函数(){
console.log(“单击图像”);
scope.inputElem[0]。单击();//警告角度触发器事件不工作!!!
};
我是这样做的
<!-- HTML -->
<button id="uploadFileButton" class="btn btn-info" ng-click="vm.upload()">
<span class="fa fa-paperclip"></span></button>
<input type="file" id="txtUploadFile" name="fileInput" style="display: none;" />
我是这样做的
<!-- HTML -->
<button id="uploadFileButton" class="btn btn-info" ng-click="vm.upload()">
<span class="fa fa-paperclip"></span></button>
<input type="file" id="txtUploadFile" name="fileInput" style="display: none;" />
此指令还将传递选定的文件:
/**
*File Input - custom call when the file has changed
*/
.directive('onFileChange', function() {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var onChangeHandler = scope.$eval(attrs.onFileChange);
element.bind('change', function() {
scope.$apply(function() {
var files = element[0].files;
if (files) {
onChangeHandler(files);
}
});
});
}
};
});
HTML,如何使用它:
<input type="file" ng-model="file" on-file-change="onFilesSelected">
此指令还将传递选定的文件:
/**
*File Input - custom call when the file has changed
*/
.directive('onFileChange', function() {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var onChangeHandler = scope.$eval(attrs.onFileChange);
element.bind('change', function() {
scope.$apply(function() {
var files = element[0].files;
if (files) {
onChangeHandler(files);
}
});
});
}
};
});
HTML,如何使用它:
<input type="file" ng-model="file" on-file-change="onFilesSelected">
另一种侦听文件输入更改的有趣方法是监视输入文件的ng model属性。Off-course FileModel是一个自定义指令
<input type="file" files-input ng-model="fileList"
ng-change="onInputChange()" multiple />
像这样:
HTML->
JS代码->
$scope.$watch('change.fnEvidence', function() {
alert("has changed");
});
希望它能帮助一些人。另一种收听文件输入更改的有趣方式是监视输入文件的ng模型属性。Off-course FileModel是一个自定义指令
<input type="file" files-input ng-model="fileList"
ng-change="onInputChange()" multiple />
像这样:
HTML->
JS代码->
$scope.$watch('change.fnEvidence', function() {
alert("has changed");
});
希望它能帮助一些人。与ng change一起工作的“files input”指令的工作演示
要使
元素在指令中工作,它需要一个与指令一起工作的元素
<input type="file" files-input ng-model="fileList"
ng-change="onInputChange()" multiple />
AngularJS输入`type=file`Demo
文件夹
{{file.name}
与ng change一起工作的“文件输入”指令的工作演示
要使
元素在指令中工作,它需要一个与指令一起工作的元素
<input type="file" files-input ng-model="fileList"
ng-change="onInputChange()" multiple />
AngularJS输入`type=file`Demo
文件夹
{{file.name}
角度元素(如指令的根元素)是jQuery[Lite]对象。这意味着我们可以像这样注册事件侦听器:
link($scope, $el) {
const fileInputSelector = '.my-file-input'
function setFile() {
// access file via $el.find(fileInputSelector).get(0).files[0]
}
$el.on('change', fileInputSelector, setFile)
}
这是jQuery事件委派。这里,监听器被附加到指令的根元素。当事件被触发时,它将冒泡到注册的元素,jQuery将确定事件是否起源于与定义的选择器匹配的内部元素。如果是,处理程序将启动
这种方法的好处是:
- 处理程序绑定到$元素,当指令作用域被销毁时,该元素将被自动清除
- 模板中没有代码
- 即使在注册事件处理程序时尚未呈现目标委托(输入)(例如,在使用
ng if
或ng开关
时),也将工作
角度元素(如指令的根元素)是jQuery[Lite]对象。这意味着我们可以像这样注册事件侦听器:
link($scope, $el) {
const fileInputSelector = '.my-file-input'
function setFile() {
// access file via $el.find(fileInputSelector).get(0).files[0]
}
$el.on('change', fileInputSelector, setFile)
}
这是jQuery事件委派。这里,监听器被附加到指令的根元素。当事件被触发时,它将冒泡到注册的元素,jQuery将确定事件是否起源于与定义的选择器匹配的内部元素。如果是,处理程序将启动
这种方法的好处是:
- 处理程序绑定到$元素,当指令作用域被销毁时,该元素将被自动清除
- 模板中没有代码
- 即使在注册事件处理程序时尚未呈现目标委托(输入)(例如,在使用
ng if
或ng开关
时),也将工作
您只需在onchange中添加以下代码,它就会检测到更改。你可以拧
`onchange="angular.element(this).scope().UpLoadFile(this.files)"`
var tmpl = '<input type="file" id="{{name}}-filein"' +
'onchange="angular.element(this).scope().UpLoadFile(this.files)"' +
' multiple accept="{{mime}}/*" style="display:none" placeholder="{{placeholder}}">'+
' <img id="{{name}}-img" src="{{icon}}" ng-click="clicked()">' +
'';
// Image was clicked let's simulate an input (file) click
scope.inputElem = elem.find('input'); // find input in directive
scope.clicked = function () {
console.log ('Image clicked');
scope.inputElem[0].click(); // Warning Angular TriggerEvent does not work!!!
};
<!-- HTML -->
<button id="uploadFileButton" class="btn btn-info" ng-click="vm.upload()">
<span class="fa fa-paperclip"></span></button>
<input type="file" id="txtUploadFile" name="fileInput" style="display: none;" />
// self is the instance of $scope or this
self.upload = function () {
var ctrl = angular.element("#txtUploadFile");
ctrl.on('change', fileNameChanged);
ctrl.click();
}
function fileNameChanged(e) {
console.log(self.currentItem);
alert("select file");
}
/**
*File Input - custom call when the file has changed
*/
.directive('onFileChange', function() {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var onChangeHandler = scope.$eval(attrs.onFileChange);
element.bind('change', function() {
scope.$apply(function() {
var files = element[0].files;
if (files) {
onChangeHandler(files);
}
});
});
}
};
});
<input type="file" ng-model="file" on-file-change="onFilesSelected">
$scope.onFilesSelected = function(files) {
console.log("files - " + files);
};
$scope.$watch('change.fnEvidence', function() {
alert("has changed");
});
<input type="file" files-input ng-model="fileList"
ng-change="onInputChange()" multiple />
link($scope, $el) {
const fileInputSelector = '.my-file-input'
function setFile() {
// access file via $el.find(fileInputSelector).get(0).files[0]
}
$el.on('change', fileInputSelector, setFile)
}
document.getElementById(id).value = "";