spPageContextInfo未定义

时间:2018-09-14 13:05:00

标签: javascript angularjs sharepoint

我正在尝试将使用UserName的AngularJs添加到Sharepoint。另外,我应该具有从SharePoint列表中查看所有userName的功能。但是我一直收到错误消息,说“ _spPageContextInfo未定义”。 我开始学习SharePoint和AngularJs。有人可以帮我吗?谢谢。

代码如下:

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />
<script type="text/javascript" src="jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="angular.min.js"></script>
<!-- modules -->
<script src="app.js"></script> 
<!-- controllers -->
<script src="view.js"></script>
<script src="add.js"></script>
</head>

<body ng-app="myApp">
<h3>view</h3>
<div class="view" ng-controller="viewItemsController" ng-repeat="user in users">
    <!-- {{user.ID}}:  -->
    {{user.Title}}, {{user.FirstName}},{{user.LastName}} 
    <br />
</div>

<hr>

<h3>add</h3>
<div class="add" ng-controller="addItemsController">
    <div class="Table">
        <div class="Row">
            <div class="Cell">Title :</div>
                <div class="Cell">
                    <input type="text" id="title" ng-model="title" />
                </div>
        </div>
        <div class="Row">
            <div class="Cell">First Name :</div>
            <div class="Cell">
                <input type="text" id="firstName" ng-model="firstName" />
            </div>
        </div>
        <div class="Row">
            <div class="Cell">Last Name :</div>
            <div class="Cell">
                <input type="text" id="lastName" ng-model="lastName" />
            </div>
        </div>
        <div class="Row">
            <div class="Cell"></div>
            <div class="Cell">
                <input type="button" id="btnAddContact" value="Add Name" ng-click="addContact()" />
            </div>
        </div>
    </div>
</div>
</body>
</html>

app.js //这是模块

var spApp = angular.module('myApp',[]);

view.js //第一个控制器

spApp.controller("viewItemsController", function ($scope, $http) {
    var url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('Users')/items?$select=Title,First_Name,Last_Name";
$http(
{
    method: "GET",
    url: url,
    headers: { "accept": "application/json;odata=verbose" }
}
).success(function (data, status, headers, config) {
            console.log(data);
    $scope.users = data.d.results;
}).error(function (data, status, headers, config) {
});

});

add.js //第二个控制器

spApp.controller("addItemsController",function($scope,$http){
    var url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getByTitle('Users')/items";
var vm = $scope;
vm.addContact = function () {
    return $http({
        headers: { "Accept": "application/json; odata=verbose", "X-RequestDigest": jQuery("#__REQUESTDIGEST").val() },
        method: "POST",
        url: url,
        data: {
            'Title': vm.title,
            'First_Name': vm.firstName,
            'Last_Name':vm.lastName
        }
    })
    .then(saveContact)
    .catch(function (message) {
        console.log("addContact() error: " + message);
    });
    function saveContact(data, status, headers, config) {
        alert("User Added Successfully");
        return data.data.d;
    }
}

});

1 个答案:

答案 0 :(得分:0)

我检查了您的代码,您使用script标记犯了拼写错误 如果您看到已添加到问题中的HTML代码

<!-- controllers -->
<sript src="view.js"></script>
<sript src="add.js"></script>

我已通过更正拼写错误(如下所示)及其工作方式在系统上测试了您的代码。

 <!-- controllers -->
    <script src="view.js"></script>
    <script src="add.js"></script>

希望如此对您有帮助。