我正在尝试更多地使用指令来应用最佳实践,但我对如何从指令中应用作用域值有一些疑问。
在此演示中,您可以看到如果单击“切换displayMenu”按钮,则div仍处于切换状态。如果切换指令代码中的7-8行:
```javascript //scope.displayMenu = !scope.displayMenu; $timeout(function(){ scope.displayMenu = !scope.displayMenu; }); ```
它会正常工作。我的问题是:这是最佳做法吗?或者有没有更好的方法来解决这个问题?
在此演示中,您可以看到如果单击“切换displayMenu”按钮,则div仍处于切换状态。如果切换指令代码中的7-8行:
```javascript //scope.displayMenu = !scope.displayMenu; $timeout(function(){ scope.displayMenu = !scope.displayMenu; }); ```
它会正常工作。我的问题是:这是最佳做法吗?或者有没有更好的方法来解决这个问题?
scope.yolo = function () {
scope.ctrl.toggle(); // COMMENT ME
//scope.ctrl.toggleApply(); // UNCOMMENT ME
};
致:
scope.yolo = function () {
//scope.ctrl.toggle(); // COMMENT ME
scope.ctrl.toggleApply(); // UNCOMMENT ME
};
显示菜单的div将切换关闭。
现在,问题是我被迫编写两个函数,一个带有"$scope.$apply",另一个没有,这显然不是明智的做法......除非我使用safeApply,例如:
$rootScope.safeApply = function(fn) {
var phase = this.$root.$$phase;
if(phase == '$apply' || phase == '$digest') {
if(fn && (typeof(fn) === 'function')) {
fn();
}
} else {
this.$apply(fn);
}
};
安全应用(safeApply)是最佳实践吗?如果不是,那么实现我想要的功能的最佳方法是什么?