gpt4 book ai didi

javascript - 隔离范围从 Angular 1.1 到 1.2 的变化

转载 作者:行者123 更新时间:2023-11-30 16:53:20 26 4
gpt4 key购买 nike

这里是 Angular N00b,我有一些带有独立作用域的指令。我创建了一个 JS Fiddle显示问题,但奇怪的是它似乎在 Angular v1.1 中按预期工作,但在 1.2+ 中它不起作用。

本质上,我正在尝试创建隔离范围指令,每个指令的内容本身都有 html。你会在 ng-show 属性中看到我试图在具有独立范围的指令上调用 isActive 方法,但是对于 angular 1.2+ 永远不会触发该方法

我确定我的隔离作用域配置不正确,但仍在努力解决这个问题。

谢谢!

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

app.directive('stage', function () {
return {
restrict: 'A',
controller: ['$scope', '$sectionService', function ($scope, $sectionService) {

// doesn't do much yet

}],
};
});

app.directive('section', function () {
return {
restrict: 'A',
scope: {
sectionIndex: '=section'
},
controller: ['$scope', '$sectionService', function ($scope, $sectionService) {

$scope.isActive = function () {
console.log("is active", $sectionService.activeSection, $scope.sectionIndex);
return $sectionService.activeSection == $scope.sectionIndex;
};

}],
};
});

app.factory('$sectionService', function () {
return {
activeSection: 0
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js"></script>
<body ng-app="myApp">
<div stage>
<div section='0' ng-show='isActive()'>This is my first section</div>
<div section='1' ng-show='isActive()'>This is my second section</div>
</div>
</body>

更新:哇对不起大家,我包含了错误的 Fiddle。那个应该有用。

最佳答案

由于this版本 1.2 中的重大更改,我们无法在父模板中访问子项的独立作用域。

选项:

  1. 将需要子级独立范围变量的元素从父模板中拉出到子级(指令)。
  2. 如果您认为调用 isActive() 的元素应该属于父级,则不要创建隔离作用域。

关于javascript - 隔离范围从 Angular 1.1 到 1.2 的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30156264/

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