2015-08-28 216 views
0

我正在开发一个项目,我的要求是动态提供页面的内容,它将包含不同的div或表格,并且我需要在运行时为这些div传递样式,这些样式可以更改很多倍。我正在使用AngularJS进行该项目。我可以找到一些resource其中适用于该div的css的一个属性是使用ng-model传递的,但是我想传递我的整个CSS属性,该类的applicabe(可以是json)从页面的Textarea元素。如何动态更改网页的内容和样式?

欣赏这方面的任何帮助。非常感谢 !我的代码

部分看起来像:CSS我想传递的

<div ng-style="sampleStyle" class="col-md-6 ">{{sampleText}}</div> 

<textarea ng-model="sampleText" cols="40"> 
</textarea> 
<textarea ng-model="sampleStyle" cols="40"> 
</textarea> 

格式为:

{ 
color: xxx; background: xxx; font-size: xx; ... 
} 
+0

你尝试过什么? –

+0

嗨psylogic,我试着将值传递给sampleStyle,但它没有工作。虽然这可能听起来多余,但我也尝试通过暴力将价值传递给ng风格,但即使这样也不适合我。 检视:

{{sampleText}}
<钮纳克单击= “的setStyle()”>集样式 控制器: \t $ scope.setStyle =函数(){ \t \t \t $ scope.sampleStyle1 = {}; \t \t \t \t \t \t $ scope.sampleStyle1 = $ scope.sampleStyle; \t \t \t //console.log($scope.sampleStyle1); \t \t} \t \t \t \t \t \t

回答

0

尝试使用ng-class代替。

HTML:

<div ng-class="sampleStyle" class="col-md-6 ">{{sampleText}}</div> 
<textarea ng-model="sampleText" cols="40"></textarea> 
<textarea ng-model="sampleStyle" cols="40"></textarea> 

编辑:

动态绑定的样式文本的元素,你不能简单地用一个NG-模型,因为角度将它解释为一个字符串,不是一个对象。您需要首先使用$parse在范围上创建一个js对象,并从ng样式引用它。

HTML:

<div ng-class="myStyle" class="col-md-6 ">{{sampleText}}</div> 
<textarea ng-model="sampleText" cols="40"></textarea> 
<textarea ng-model="sampleStyle" ng-change="styleChangeFn()" cols="40"></textarea> 

JS:

app.controller('MainCtrl', ["$scope", "$parse", function($scope, $parse) { 
    $scope.styleChangeFn = function() { 
    $scope.myStyle = $parse($scope.sampleStyle)($scope); 
    } 
}]); 
+0

感谢您的溶液ShaharZ,但似乎使用溶液I可以传递任何类这已经存在于我的CSS中。无论我在文本区域sampleStyle中提供的内容如何,​​并且与col-md-6一起绑定到我的课程。我想要的是通过动态样式,如{font-size:30px;红色;填充:10px的; margin:10px; }来自文本区域本身。 –

+0

@NitinKumar对不起,误解你在问什么。更新了我的答案。请注意,出于学习Angular的目的,您可以这样做,但对于双向绑定样式信息几乎没有实际的理由。通过创建自定义指令有更好的解决方案,但这是最简单的 – ShaharZ