我有多个路线的多个控制器:
app.controller('FirstController', function ($scope) { $scope.func = function () { console.log('route 1'); } } app.controller('SecondController', function ($scope) { $scope.func = function () { console.log('route 2'); } } ...
和使用的伪指令,通过$scope.func这种方式:
$scope.func
app.directive('thedirective', function () { return { link: function (scope, $element, attrs) { $scope.func(attrs.thedirective); } } });
$scope.func每个控制器都不同。我希望$ scope.func在route1中时会记录“ route 1”,而FirstController是当前控制器,而在Route 2中时会记录“ route 2”,但在控制台中只有“ rout 1”。您能否告诉我为什么更改路径不会更改$ scope指令?
孤立范围 是我用来重用一个函数的方法,该函数的定义不同是多个控制器。 根据文档,当您隔离指令的范围时,例如:
scope: { myIsolatedFunc: '=' }
Angular将查找当前范围以获取一个名为myIsolatedFuncelement 的属性值的属性。意思是:
myIsolatedFunc
如果您有一个名为的函数$scope.func1和一个定义为的元素:
$scope.func1
<div myIsolatedFunc="func1">
在与另一个控制器一起的另 一条路线中 ,类似的功能$scope.func2以及定义为的元素:
$scope.func2
<div myIsolatedFunc="func2">
您可以在指令中使用这两个功能:
app.directive('thedirective', function () { return { scope: { myIsolatedFunc: '=' }, link: function (scope, $element, attrs) { $scope.myIsolatedFunc(attrs.thedirective); } } });
更不用说对于不同的功能,不必使用不同的名称。