指令ng-include中的AngularJS 1.5范围

时间:2016-07-12 11:14:28

标签: angularjs angularjs-directive angularjs-ng-include

这里有一些带有uploadfile指令的代码http://jsfiddle.net/miuosh/n6yppypj/。问题是我用这个

  <input type="file" file-model="myFile" />
  <button ng-click="uploadFile()">upload me</button>

在ng-include =&#34;&#39; views / uploadFileForm.html&#39;&#34;。

在指令中我添加&#34; myFile&#34;范围。事实证明,Angular使用myFile创建了新范围。添加&#34; myFile&#34; to&#34; rootScope&#34;我需要使用

modelSetter(scope.$parent.$parent.$parent[..],element[0].files[0])

这很不方便,因为我需要知道我有多少父母范围。

1 个答案:

答案 0 :(得分:1)

我遇到了处理带角度文件输入的类似问题。 您可以创建一个指令,它将监听文件更改并使用文件调用其控制器函数。这是jsFiddle

var app = angular.module('app', []);

app.controller('yourCtrl', function() {
    $scope.image;
    $scope.imageChanged= function (files) {
        $scope.image = files;
    };
});

app.directive('customOnChange', function() {
  return {
    restrict: 'A',
    link: function (scope, element, attrs) {
      var onChangeFunc = scope.$eval(attrs.customOnChange);
      element.bind('change', function(event){
        var files = event.target.files;
        onChangeFunc(files);
      });

      element.bind('click', function(){
        element.val('');
      });
    }
  };
})

<input type="file" id="imgInput" custom-on-change="imageChanged"/>