Javascript 改变角度方向
我正在尝试以angular:Javascript 改变角度方向,javascript,angularjs,Javascript,Angularjs,我正在尝试以angular: Html <span class="sp-right"> <label> Number: </label> </span> 它工作得很好,但当我点击链接(ui路由器)并返回时,它变为原来的 有什么想法吗?我不知道您的要求是什么,但您不使用ngClass有什么原因吗 <div ng-class='whatClassIsIt(position)' ng-click='position
Html
<span class="sp-right">
<label>
Number:
</label>
</span>
它工作得很好,但当我点击链接(ui路由器)并返回时,它变为原来的有什么想法吗?我不知道您的要求是什么,但您不使用ngClass有什么原因吗
<div ng-class='whatClassIsIt(position)' ng-click='position = !position'>
您必须记住控制器中的状态(在您的情况下是方向),该控制器的级别(例如主体)不会被ui路由器替换,或者(我更愿意)您必须记住服务中的状态(
.service |.factory | value
)
例如:
app.value('layoutState', {
direction: 'right'
});
当你把国家放在一个安全的地方时,你可以用一种更“狭隘”的方式改变你的实现:
此class=“sp right”有很多表单。所以我不想改变所有的课程。有什么想法吗?你能给我们一个html代码的大图吗?“方向”是单输入控件的属性还是窗体的属性?请编辑您的问题,以便我们阅读。对此,仅提供一条注释是不够的。此类class=“sp right”有很多表单。所以我不想改变所有的课程。有什么想法吗?——您不必更改每个类,只需将上面的ng类应用于您想要更改的类即可。如果有很多,可以使用一个指令(当您以后不得不添加更多具有相同行为的DOM元素时,它将节省您的时间)。控制器每次都会重置,并且您希望保持状态。对吗?您必须在整个应用程序中使用全球服务。将服务注入控制器。然后,在指令的顶部,您可以简单地说
element.attr('class',scope.state)代码>问题是此指令只工作一次,如何在每个步骤中运行它?
$scope.position = true;
// true=sp-right, false=sp-left
$scope.whatClassIsIt(pos){
return pos? "sp-right" : "sp-left";
};
app.value('layoutState', {
direction: 'right'
});
<span class="{{layoutState.direction === 'right' ? 'sp-right' : 'sp-left'}}">
<label>
Number:
</label>
</span>
app.directive("buttonThatTrigger", ['layoutState', function (layoutState) {
return {
restrict: 'C',//target all elements with class button-that-trigger
link: function (scope, element, attrs) {
scope.layoutState = layoutState;
element.click(function(){
layoutState.direction = layoutState.direction === 'right' ?
'left' : 'right';
});
}
};
}]);