我必须添加我正在使用 Sharepoint 2013,可视化 Web 部件。我的 ascx:
<%@ Control Language="C#" Inherits="SharePoint.BLL.UserControls.VODCatalog, SharePoint.BLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=81fc048468441ab3" %>
<%@ Register TagPrefix="SPWP" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<div ng-app="VODCatalogModule">
<div class="wrapper" ng-view="">
</div>
</div>
我的 JS:
var VODCatalogModule = angular.module('VODCatalogModule', []);
var testWPDefinedView = 'TopLevelView';
VODCatalogModule.config(function ($routeProvider) {
$routeProvider.when('/TopLevelView', { controller: 'VODCatalogController', templateUrl: '/_catalogs/masterpage/html/VODCatalog_TopLevelView.html' })
.when('/LowLevelView', { controller: 'VODCatalogController', templateUrl: '/_catalogs/masterpage/html/VODCatalog_LowLevelView.html' })
.otherwise({ redirectTo: '/' + testWPDefinedView });
});
function VODCatalogController($scope, $http) {
$scope.VODCatalogLevel = 1;
$scope.BreadCrumbs = [];
$scope.MainCatalog = [];
$scope.NavCatalog = [];
$scope.crumbsVisible = $scope.BreadCrumbs.length == 0 ? "hidden" : "";
var getVODCatalogData = function (PARENT_VOD_CATALOG_GK, vodLevel) {
var url = "VODCatalogHandler.ashx?action=GetVODCatalogData&vodLevel=" + vodLevel;
if (PARENT_VOD_CATALOG_GK)
url += "&PARENT_VOD_CATALOG_GK=" + PARENT_VOD_CATALOG_GK;
$http.get(url, { cache: true })
.success(function (data, status, headers, config) {
setVODCatalogData(data, vodLevel);
}).error(function (data, status, headers, config) {
alert('ERROR in VODCatalogDataService get');
});
};
var setVODCatalogData = function (data, vodLevel) {
$scope.BreadCrumbs = data;
$scope.MainCatalog = data;
$scope.NavCatalog = data;
};
$scope.catalogItemClick = function (catalogItem) {
getVODCatalogData(catalogItem.VOD_CATALOG_GK, ++$scope.VODCatalogLevel);
};
getVODCatalogData(null, $scope.VODCatalogLevel);
}
VODCatalogModule.controller("VODCatalogController", VODCatalogController);
我的观点(VODDatalog_TopLevelView.html):
<section class="zebra brightBGcolor">
<div class="catalog">
<div class="centerPage">
<div class="pageTitle withBreadCrumbs">
<h3>VOD</h3>
<ul class="breadCrumbs {{ crumbsVisible }}">
<li>
<a href="#">VOD</a>
</li>
<li ng-repeat-start="crumb in BreadCrumbs">
<span> </span>
</li>
<li ng-repeat-end>
<a href="#">{{ crumb.NAME }}</a>
</li>
</ul>
</div>
<ul class="list inRow4 clearfix">
<li ng-repeat="catalogItem in MainCatalog" ng-click="catalogItemClick(catalogItem)">
<a class="box" href="#">
<img src="{{ catalogItem.MEDIA_URI_Complete}}" alt="">
<div class="textContainer">
<h4>{{ catalogItem.NAME }}</h4>
</div>
</a>
</li>
</ul>
</div>
</div>
</section>
一开始一切看起来都很棒,它加载了第一个带有所有图片和数据的 ajax 调用。
然后,当我使用 ng-click 在其中一个 li 上单击时,第二个 ajax 被执行两次,一旦它获得正确的数据,并且在它通过初始调用 getVDCatalogData(null, $scope.VODDatalogLevel); 再次调用自身之后立即执行。并带回旧视图。
当我尝试在 module.run 中放入一些东西时,它也运行了两次,有帮助吗?
我将不胜感激任何提示和帮助,因为这是我第一次使用 angular。
谢谢!爱丽儿
编辑:更多信息 - 我在控制器的开头放置了一个日志,单击后控制器再次初始化