Angularjs ng单击切换变量并更新整个页面
我有一个名为Angularjs ng单击切换变量并更新整个页面,angularjs,Angularjs,我有一个名为RecruiterDashboard.IsColdList的全局变量。它是一个决定运行一个或另一个指令的布尔值。加载页面时,通过正常脚本将变量设置为true或false 我想做的是允许用户通过ng click切换,而不是显示其他指令,因此我进行了ng click并将RecruiterDashboard.IsColdList从“false”设置为“true”。问题是这不会重新加载角度页面并关闭控制器。如何使页面再次在控制器中运行 这就是我到目前为止所做的: $scope.showCol
RecruiterDashboard.IsColdList
的全局变量。它是一个决定运行一个或另一个指令的布尔值。加载页面时,通过正常脚本将变量设置为true或false
我想做的是允许用户通过ng click切换,而不是显示其他指令,因此我进行了ng click并将RecruiterDashboard.IsColdList
从“false”设置为“true”。问题是这不会重新加载角度页面并关闭控制器。如何使页面再次在控制器中运行
这就是我到目前为止所做的:
$scope.showColdList = function (projId) {
RecruiterDashboard.isColdList = true;
};
我想指出,我没有使用角度布线。我使用的是C#MVC
我的逻辑是这样的:
callPanelControllers.controller('callPanelController', function($scope) {
$scope.isColdList = RecruiterDashboard.isColdList;
});
callPanelControllers.controller('incomingCall', function ($scope) {
$scope.showColdList = function () {
RecruiterDashboard.isColdList = true;
};
});
<div ng-click="showColdList()" ng-controller="incomingCall"></div>
<div ng-controller="callPanelController">
<cold-list ng-show="isColdList"></cold-list>
</div>
callPanelController.controller('callPanelController',函数($scope){
$scope.isColdList=RecruiterDashboard.isColdList;
});
CallPanelController.controller('incomingCall',函数($scope){
$scope.showColdList=函数(){
RecruiterDashboard.isColdList=true;
};
});
我开发了一种黑客技术,这样给定元素中的所有内容都会在某个变量发生变化时重新加载
csapp.directive("csReloadOn", ["$timeout", function ($timeout) {
var getTemplate = function () {
return '<div ng-if="doRefreshPageOnModeChange"><div ng-transclude=""></div></div>';
};
var linkFunction = function (scope, element, attrs) {
scope.doRefreshPageOnModeChange = true;
scope.$watch(attrs.csReloadOn, function (newVal, oldVal) {
if (newVal === oldVal) return;
scope.doRefreshPageOnModeChange = false;
$timeout(function () { scope.doRefreshPageOnModeChange = true; }, 100);
});
};
return {
restrict: 'A',
transclude: true,
template: getTemplate,
link: linkFunction
};
}]);
csapp.directive(“csReloadOn”,[“$timeout”,函数($timeout){
var getTemplate=函数(){
返回“”;
};
var linkFunction=函数(范围、元素、属性){
scope.doRefreshPageOnModeChange=true;
作用域$watch(attrs.csReloadOn,函数(newVal,oldVal){
如果(newVal==oldVal)返回;
scope.doRefreshPageOnModeChange=false;
$timeout(函数(){scope.doRefreshPageOnModeChange=true;},100);
});
};
返回{
限制:“A”,
是的,
模板:getTemplate,
link:linkFunction
};
}]);
你可以像这样使用它
<div cs-reload-on="{{pagemode}}">
<!-- your html here-->
</div>
因此,它只是删除并重新呈现div内部的完整内容,因此所有内容都将重新初始化,等等。angular应该“重新加载”。你能添加其余的相关代码吗?它在单个控制器中触发内容,但不触发其他控制器。你如何控制显示哪个指令?你能按照Acsisr的建议粘贴更多的代码吗?我添加了更多的细节