寻求你的帮助。我哪里错了?
这是我的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}}中的数据。任何指导都将非常感谢。
谢谢和问候
答案 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