gpt4 book ai didi

javascript - 具有原始绑定(bind)的指令中的函数回调

转载 作者:行者123 更新时间:2023-11-29 10:15:48 25 4
gpt4 key购买 nike

将一个在初始化时回调的函数传递给一个指令,这个函数由一个字符串属性标记,然后被解析和使用。问题是在使用时,函数绑定(bind)不再附加/绑定(bind)到函数所属的对象。这就是我的意思 ( see on plunker )

<html ng-app="plunker">

<head>
<script data-require="angular.js@1.2.x" src="http://code.angularjs.org/1.2.13/angular.js" data-semver="1.2.13"></script>
<script>
var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
$scope.name = 'World';
$scope.container = {
x: null
, setup: function(x){
console.log(this); //this here should be $scope.container, but its window
this.x = x;
}
};
});

app.directive('dir', ['$parse', function($parse) {
return {
restrict: 'E'
, transclude: false
, scope: true
, link: function(scope, element, attrs) {
var callback = attrs.setup
, someCalcVar = 10
;
$parse(callback)(scope)(someCalcVar);
}
};
}]);

</script>
</head>

<body ng-controller="MainCtrl">
<p>container.x == '{{container.x}}'</p>
<dir setup="container.setup"></dir>
</body>

</html>

有没有办法实现我想要的?也许有更好的方法来设计它,但仍然为回调和相关变量保留某种容器?

编辑:

天真的胜利可能是检查回调是否有一个,然后使用func.bind(substr(callback, ...)) 手动绑定(bind)它。 .. 是否有内置到 Angular 东西可以做到这一点?或者,是否有更清洁的方法来解决所有这些问题?

最佳答案

这不是最优雅的解决方案,但您始终可以创建一个函数来包装容器上的调用设置:

$scope.callableSetup = function(x) {
$scope.container.setup(x);
}

关于javascript - 具有原始绑定(bind)的指令中的函数回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com