之前的tab切换写的不好,看到何同学写的,学习了下,也被批评了对js对理解,如果是查询,会向上查找,如果是赋值,本作用域找不到,直接创建新的
<div class="tab-list">
<a ng-class="{'tab-active' : cname === 'taskList'}" style="border-right:none;margin-right:-4px" ng-click="switchTab($event, 'taskList')">{{lang.task_list}}</a>
<a ng-class="{'tab-active' : cname === 'billList'}" ng-click="switchTab($event, 'billList')">{{lang.bill_list}}</a>
</div>
<div id="bill"></div>
easySpa.use([
'widget/slimscroll',
'widget/prompt',
'public/javascripts/billCreation/20161224/taskList.js',
'public/javascripts/billCreation/20161224/billList.js',
'public/javascripts/billCreation/20161224/dateTime.js',
'public/common/calander.js'
]);
app.controller('billCreationCtrl',['$scope','billCreationService','billCreationView','$compile', BillCreationCtrl]);
function BillCreationCtrl($scope, billCreationService, billCreationView, $compile) {
var route = location.hash.indexOf("from=billCreation");
if(route === -1){
route = 'taskList';
}else{
route = 'billList';
}
billCreationService.bill = $("#bill");
$scope.switchTab = function(e, name){
if(billCreationService.nowScope){
billCreationService.nowScope.unwatcher.forEach(function(watcher){ watcher() });
billCreationService.nowScope.$destroy();
}
$scope.cname = name;
billCreationService.getTpl(name).then(function(tpl){
billCreationService.bill.html($compile(tpl)($scope.$new()));
});
};
$scope.count = 0;
$scope.lang = Lang.dataPool['billCreation'];
$scope.switchTab(null, route);
}
有几篇文章也不错
点击打开链接 scope的一生
点击打开链接 深入理解scope