0

这是html部分...

<body ng-controller="homeController">
<div id="happyValentines" ng-model="myText"> {{ myText }}

我不明白为什么这有效...

$scope.myText = "fksdm kdsmfk msldfkm kdfm ksdmf lsmdflm ";
$scope.changeHeight = function(elem) {
var body = document.body;
var height = 0;
var right = 0;
var opacity = 0; ...

但这并不...

$scope.changeHeight = function(elem) {
  var body = document.body;
  var height = 0;
  var right = 0;
  var opacity = 0;
  body.style.opacity = 0;
  var index = 0;
  var str = "fksdm kdsmfk msldfkm kdfmksdmf lsmdflm ";
  function frame() {
    index += 2;
    $scope.myText = str.substr(0, index);
    height += 4;
    if (right < 60) { 
      right += 1;
      elem.style.marginRight = right + "px";
    }
    opacity += .01;
    elem.style.height = height + "px";
    elem.style.opacity = opacity;
    body.style.opacity = opacity;
    if (opacity >= 1) {
      clearInterval(id);
    $scope.addButtons();
    // document.createElement....
    }
  }
    var id = setInterval(frame, 30);
  }

我对角度很陌生,想知道这背后的角度构造是什么,或者为什么会这样。

4

2 回答 2

1

在第二个代码中,您声明了函数“changeHeight”,并在其中设置了“myText”的值。但是在页面上您没有调用“changeHeight”函数,因此它不会调用该函数并且不会设置“mytext”的值。尝试使用 ng-init 或 ng-click 或 ng-change a/c 在页面上调用函数“changeHeight”以适应情况。

于 2014-03-12T05:23:56.700 回答
0

首先:ng-model主要用于表单元素,基本上是使用onchange事件从表单获取值到模型和从模型获取值到表单元素的豪华版$watch。您不需要它只是在屏幕上显示一个值。

第二:您不应该修改控制器中的文档或 DOM。那是指令的责任(或者如果是文档元素修改,则可能是服务)。

关于您的第二个代码块,我不明白为什么您function frame()的方法中有一个“” changeHeight。而且代码是不完整的,你从来没有真正调用过frame()设置$scope.myText.

请提供完整的代码以获得更好的帮助。

于 2014-02-14T08:06:10.603 回答