Angularjs指令专用范围/模型
我遇到了一个指令问题,这个问题正在成为一个需要解决的难题,这似乎是由于版本1.0.8和版本1.2.0之间的角度变化造成的 在using version 1.0.8中,您可以看到在更改输入文件时,会调用Angularjs指令专用范围/模型,angularjs,angularjs-directive,angularjs-scope,Angularjs,Angularjs Directive,Angularjs Scope,我遇到了一个指令问题,这个问题正在成为一个需要解决的难题,这似乎是由于版本1.0.8和版本1.2.0之间的角度变化造成的 在using version 1.0.8中,您可以看到在更改输入文件时,会调用fileChangedfn并更改$scope.file 然而,在使用1.2.0版时,相同的代码并不更新指令 看起来它和具有隔离作用域的指令有关,但不能拥有自己的作用域变量。例如,指令的控制器: controller: function ($scope, $timeout, $upload) {
fileChanged
fn并更改$scope.file
然而,在使用1.2.0版时,相同的代码并不更新指令
看起来它和具有隔离作用域的指令有关,但不能拥有自己的作用域变量。例如,指令的控制器:
controller: function ($scope, $timeout, $upload) {
$scope.fileCount = 0;
}
...
scope: {
uploadPath: '@'
},
templateUrl: 'file-uploader.html',
controller: function ($scope, $timeout, $upload)
...
我是否遗漏了一些非常关键的内容?这不起作用的原因是没有为指令设置模板:
controller: function ($scope, $timeout, $upload) {
$scope.fileCount = 0;
}
...
scope: {
uploadPath: '@'
},
templateUrl: 'file-uploader.html',
controller: function ($scope, $timeout, $upload)
...
我确信使用模板:'html here'
也会起作用,但事实上还有更多的html
隔离作用域发生了变化。表达式
$scope.file=element.files[0]代码>在指令范围内更改文件
,而不是在指令范围外更改。您需要做的是在指令中的文件
和指令外部的文件
之间建立连接
<div file-upload file="file">
<input type="file" />
<hr />
File selected: {{file.name}}
</div>
...
myApp.directive('fileUpload', function(){
return {
restrict: 'A',
scope: {
file: '='
},
所选文件:{{File.name}
...
myApp.directive('fileUpload',function(){
返回{
限制:“A”,
范围:{
文件:'='
},
谢谢,这也解决了问题,但这意味着任何文件上传的消费者都必须知道该指令是如何工作的,这在本例中是不可取的。@danrichardson在您最初的示例中,开发人员需要知道输入[type=file]
是必需的,没错。但在迁移之前也是如此;)您的答案肯定是更好的选择,但并没有解决最初的问题:在孤立的作用域和外部世界之间共享数据。这不是迁移问题,我尝试使用早于1.2的版本解决问题(如果可行的话)。尽管如此,我不是在隔离作用域之间共享数据,这是一个添加单向功能的指令。无论如何,再次感谢:)