这应该很简单,但出于某些原因我有
<div class="file-navigator" ng-controller="FileSystemCtrl">
<input type="file" id="openFile" ng-model="path" ng-change="openFolder()" nwdirectory />
ng-change
未被触发。
如果我使用
onchange="angular.element(this).parent().scope().openFolder()"
onchange事件被触发,但很明显,这很难看。
FileSystemCtrl被定义为我导入我的应用程序的模块,它的结构如下。
angular.module('myApp.FileSystemModule',[])
.factory('FileSystemModel',function($rootscope){...})
.controller('FileSystemCtrl',function(){...});
为什么孩子不知道它的父控制器?特别是因为孩子没有自己的控制器?
答案 0 :(得分:1)
AngularJs不支持输入类型文件。见this issue。并且this。您的onchange事件是目前最好的选择。
答案 1 :(得分:1)
另一种方法是使用directive
利用$compile
与ng-model
进行互动:
.directive('path', function($compile) {
return {
restrict: 'E',//<path></path> in your markup
replace: true,
template: '<input type="file" />',
link: function(scope, elem, attrs) {
var textField = $(elem).attr('ng-model', 'something');
$compile(textField)(scope);
$(elem).change(function() {
//do stuff
});
}
};
});
我没有测试它,但它为你提供了一个开始。