{{}}不从控制器渲染数据

时间:2013-12-09 06:30:43

标签: angularjs

寻求你的帮助。我哪里错了?

这是我的HTML:

    <div data-ng-controller="documentPreviewCtrl">
        <h1> Header {{testHeader}} </h1>
         <div id="bodyContent">
            {{testData}}
            {{data}}
         </div>
      </div>

这是我的js。

    documentPreview.controller('documentPreviewCtrl',['$scope','$element',function($scope,$element)     {
$scope.initView($element);
$scope.$on('showPreview',function(event, data){
    alert(data+ " clicked!");
    $scope.data = data;
    $scope.testHeader = "This is the header";
    $scope.testData = "This is just some dummy data.";
}); 
}]);

但我的HTML只是显示:'标题'。为什么它不会读取{{testHeader}}或{{testData}}中的数据。任何指导都将非常感谢。

谢谢和问候

1 个答案:

答案 0 :(得分:1)

从评论中看来你应该从这个

开始
documentPre.controller('documentPreviewCtrl',['$scope','$element',function($scope,$element)     {
    $scope.initView($element);
    $scope.testHeader = "This is the header";
    $scope.testData = "This is just some dummy data.";
}]);

然后每当你点击某个东西时,就像这个

一样通过onclick func追加数据
<div data-ng-controller="documentPreviewCtrl">
        <h1 ng-click="headerClick"> Header {{testHeader}} </h1>
         <div id="bodyContent" style="display:none">
            {{testData}}
            {{data}}
         </div>
      </div>

现在你的CTRL应该是这样的

documentPre.controller('documentPreviewCtrl',['$scope','$element',function($scope,$element)     {
    $scope.initView($element);
    $scope.headerClick = function(data){
        //notice that data can be your scope item
        $scope.testHeader = "This is the header";
        $scope.testData = "This is just some dummy data.";
    };
}]);

在你完成这项工作后,我有一个关于广播的迷你教程: http://bresleveloper.blogspot.co.il/2013/08/angularjs-and-ajax-angular-is-not.html

编辑: 另一件事是要记住,角度不像标准的JS编程那样转向基础,所以它可能是你广播的事件没有发生在它应该的地方而且Digest()错过了它。一个不错的解决方案是使用总是最后渲染的$ timeout。

正确的解决方案是架构解决方案,即所有数据都存储在服务中,视图仅从服务读取,而CTRL只是告诉服务点击的内容。请参阅此处获取详细教程:http://bresleveloper.blogspot.co.il/2013/08/breslevelopers-angularjs-tutorial.html