【问题标题】:AngularJS, _spPageContextInfo is not definedAngularJS,_spPageContextInfo 未定义
【发布时间】:2018-09-18 04:43:02
【问题描述】:

我正在尝试将用户名使用 AngularJs 添加到 Sharepoint 中。此外,我应该有一个功能,我应该从 SharePoint 列表中查看所有用户名。但我不断收到错误消息说“_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;
    }
}

});

编辑: 检查this 后,我现在可以运行我的应用程序了。帮助这个链接可以帮助其他人。

【问题讨论】:

    标签: angularjs sharepoint


    【解决方案1】:

    至少对我来说,你用 index.html 做什么并不明显。

    _spPageContextInfo 仅在 SharePoint 托管页面(即脚本编辑器网页、页面布局、共享点设计器编辑的页面)上可用。

    只有在 SP.js 执行后才可用(按需查看 SharePoint 脚本)。

    如果您正在尝试进行适当的最佳实践 sharepoint Web 开发,请查看 SharePoint SPFX

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-28
      • 2015-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多