angularjs使用$eval从指令中访问控制器的$作用域
angularjs access $scope of Controller from directive using $eval
我试图在指令内访问在我的指令控制器范围内定义的方法
这是指令
的一部分angular.module('myApp', []).directive('jqmultiselect', function($timeout){
return {
restrict: 'A',
scope: {
info: '=info',
},
link: function (scope, element, attrs, ngModelCtrl) {
$timeout(function(){
//simple example
$(element).click(function(){
//do something with info
info = 'test';
scope.$eval(attrs.customclick);
});
});
}
};
}).controller('MainCtrl', function ($scope, $http, $timeout){
$scope.myInfo="test";
$scope.reloadModule = function(info){
console.log(info);
};
});
我想做的是通过HTML元素的属性标签在控制器中调用一个名为"reloadModule()"的函数
我的一段HTML代码
<select
jqmultiselect
info="myInfo"
customclick="reloadModule(info)">
<option>1</option>
<option>2</option>
<option>3</option>
</select>
更具体的例子在Jsfiddle http://jsfiddle.net/7j3HV/2/
你知道我怎么才能让它显示里面有"更改ok"的警告吗?
您的提琴样品有问题。一个是您缺少的ng-controller
声明:
<div ng-app="myApp" ng-controller="MainCtrl">
另一个不完全是和问题,而是"隔离作用域"指令的一个特性,它允许您使用&
来包含来自父控制器的方法。
类似:
angular.module('myApp', []).directive('jqmultiselect', function($timeout){
return {
restrict: 'A',
scope: {
info: '=info',
customclick:"&"
},
...
这允许你在指令中调用方法,就像scope.customclick();
关于你的第二个问题,如何从我的指令更新一个变量,这里提琴样例:
scope.$apply(function () {
scope.info = "change ok";
});
更正后的版本:
http://jsfiddle.net/3J5L4/5/相关文章:
- 否'访问控制允许来源'标头存在于IISNOde中请求的资源(AngularJS+NodeJs)上
- CORS:否'访问控制允许来源'header-但是php设置头文件
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- CORS:访问控制允许原点不等于提供的原点
- angularjs:访问angular控制器中的jquery变量
- 飞行前响应中的访问控制允许标头不允许Angularjs请求标头字段访问控制允许标题
- django没有访问控制允许删除原始标头
- HTML5 Canvas访问控制允许原始错误
- Android、iOS和Windowsphone的PHP访问控制
- 访问控制台中的匿名函数
- 访问控制允许标头不允许X-Requested-Wise
- 我如何设置HTTP头“;访问控制允许起源”;用于来自thttpd web服务器的HTTP响应
- Ajax—“;访问控制允许起源”;错误
- XMLHttpRequest无法加载url Origin访问控制允许Origin不允许null
- 访问控制允许来源,即使在同一域上
- jQuery 表单插件:XMLHttpRequest 无法加载 http://www...没有“访问控制允许来源”
- Javascript 受客户端和访问控制允许源的限制
- 访问控制允许方法不允许删除
- 即使在服务器将访问控制允许原点设置为“*”之后,也会收到javascript错误
- AngularJS 没有“访问控制允许来源”标头