从指令中调用Angular控制器函数
Calling Angular controller function from directive
我在Angular
中有一个自定义指令,它需要调用控制器中的函数,传递一些数据。控制器和指令的代码如下。在我的指令中,当我调用scope.modify(data);
时,它调用控制器中的函数,但它似乎没有传递数据(它将数据打印为未定义)。为什么会这样?
我的控制器有一个功能,modify()
,有一些逻辑:
$scope['modify'] = function(data) {
var obj = $scope['template']();
console.log(data);
// ... do stuff with data
}
我从我的指令中调用它,它从文件中读取数据。
app.directive("modifyBtn", function($compile) {
return {
restrict: "E",
scope: {
modify:"&"
},
link: function(scope, element, attrs) {
var fileElem = angular.element(element.find("#file_input2"));
var upload = function() {
var file = fileElem[0].files[0];
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function(e) {
var data = {};
// read JSON content from file and store as data
console.log(data); // prints correct data
scope.modify(data);
}
};
$(fileElem).on("change", upload);
}
}
});
最后,这是我的指令,视图侧,在HTML
:
<modify-btn modify="modify()">
<li class="active">
<span class="btn creation-btn" ng-click="fileshow = true">
Upload JSON
</span>
</li>
<li>
<input type="file" id="file_input2" ng-show="fileshow" />
</li>
</modify-btn>
问题位于使用地点的视图中。使用&
绑定,您提供了一个在控制器范围内执行的表达式。表达式是modify()
。注意没有参数。控制器函数中的参数未定义。解析:只在模板
<modify-btn modify="modify">
相关文章:
- AngularJS执行指令模板中的控制器函数
- Angularjs:路由后如何调用控制器函数
- 为什么控制器函数没有执行 Angular Js 1.5.5
- 在 html5 视频结束时调用 AngularJS 控制器函数
- Angularjs指令调用控制器函数
- 从浏览器调用角度控制器函数
- 如何在angular js中从指令调用控制器函数
- AngularJS-如何在ng中继器中调用以项值为参数的控制器函数
- Angularjs将函数从控制器传递到指令(或从指令调用控制器函数)-带参数
- 如何使用ajax从javascript调用控制器函数
- 触发视图'的控制器函数
- 从AngularJS中的视图调用控制器函数
- 当使用Angular1+ES6时,控制器函数中未定义依赖注入,控制器是一个类
- 从指令角度调用控制器函数
- 从指令调用控制器函数(使用从指令传递的参数)
- 从 Karma 和 Jasmine 测试调用控制器函数
- 从指令调用角度控制器函数
- 有什么方法可以放置一个触发器来在 CodeIgniter 的控制器函数中切换引导模式
- 如何修复角度 js ng 控制器函数调用
- 我可以将变量控制器函数传递给指令中的函数链接吗?