2014-09-19 61 views
4

我正嘗試使用Office PnP中的分類選擇器示例。未捕獲ReferenceError:類型未在sp.runtime.js中定義

我只想一個字段綁定到一個託管元數據項。

我的錯誤是在這裏: http://screencast.com/t/nOaTusUH4V

我的代碼是:

<head> 
    <meta charset="utf-8" /> 
    <title>Learning bootstrap</title>  
    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <link href="../Content/bootstrap.min.css" rel="stylesheet" /> 
    <link href="../Content/bootstrap-theme.min.css" rel="stylesheet" /> 
    <link rel="Stylesheet" type="text/css" href="../Content/taxonomypickercontrol.css" /> 
    <script src="../Scripts/jquery-2.1.1.min.js"></script> 
    <script type="text/javascript" src="/_layouts/15/sp.runtime.js"></script> 
    <script type="text/javascript" src="/_layouts/15/sp.js"></script> 

    <script src="../Scripts/app.js" type="text/javascript"></script> 
    <script src="../Scripts/taxonomypickercontrol.js" type="text/javascript"></script> 
</head> 


body> 
    <div id="divSPChrome"></div> 
    <div class="container">  
     <div class="row"> 
      <div class="col-md-8"> 
       <h2>Create project site</h2> 
       <form class="form-horizontal" role="form"> 
        <div class="form-group"> 
         <label for="inputEmail3" class="col-sm-2 control-label">Project name</label> 
         <div class="col-sm-10"> 
          <input type="text" class="form-control" id="inputEmail3" placeholder="Project name"> 
         </div> 
        </div> 
        <div class="form-group"> 
         <label for="inputPassword3" class="col-sm-2 control-label">Domain</label> 
         <div class="col-sm-10"> 
          <input type="text" class="form-control" id="inputPassword3" placeholder="Domain"> 
          <div class="ms-core-form-line" style="margin-bottom: 0px;"> 
           <input type="hidden" id="taxPickerContinent" /> 

          </div> 
         </div> 
        </div> 

正如你可以看到我有隱藏字段。 而我App.js文件是:

// variable used for cross site CSOM calls 
var context; 
// variable to hold index of intialized taxPicker controls 
var taxPickerIndex = {}; 

//Wait for the page to load 
$(document).ready(function() { 

    //Get the URI decoded SharePoint site url from the SPHostUrl parameter. 
    var spHostUrl = decodeURIComponent(getQueryStringParameter('SPHostUrl')); 
    var appWebUrl = decodeURIComponent(getQueryStringParameter('SPAppWebUrl')); 
    var spLanguage = decodeURIComponent(getQueryStringParameter('SPLanguage')); 

    //Build absolute path to the layouts root with the spHostUrl 
    var layoutsRoot = spHostUrl + '/_layouts/15/'; 

    //load all appropriate scripts for the page to function 
    $.getScript(layoutsRoot + 'SP.Runtime.js', 
     function() { 
      $.getScript(layoutsRoot + 'SP.js', 
       function() { 
        //Load the SP.UI.Controls.js file to render the App Chrome 
        $.getScript(layoutsRoot + 'SP.UI.Controls.js', renderSPChrome); 

        //load scripts for cross site calls (needed to use the people picker control in an IFrame) 
        $.getScript(layoutsRoot + 'SP.RequestExecutor.js', function() { 
         context = new SP.ClientContext(appWebUrl); 
         var factory = new SP.ProxyWebRequestExecutorFactory(appWebUrl); 
         context.set_webRequestExecutorFactory(factory); 
        }); 

        //load scripts for calling taxonomy APIs 
        $.getScript(layoutsRoot + 'init.js', 
         function() { 
          $.getScript(layoutsRoot + 'sp.taxonomy.js', 
           function() { 
            //bind the taxonomy picker to the default keywords termset 
            //$('#taxPickerKeywords').taxpicker({ isMulti: true, allowFillIn: true, useKeywords: true }, context); 

            $('#taxPickerContinent').taxpicker({ isMulti: false, allowFillIn: false, useKeywords: false, termSetId: "51f18389-f28a-4961-a903-ee535f7c620d", levelToShowTerms: 1 }, context, initializeCountryTaxPicker); 
            taxPickerIndex["#taxPickerContinent"] = 0; 
           }); 
         }); 
       }); 
     }); 
}); 

function initializeCountryTaxPicker() { 
    //if (this._selectedTerms.length > 0) { 
    // $('#taxPickerCountry').taxpicker({ isMulti: false, allowFillIn: false, useKeywords: false, termSetId: "0cc96f04-d32c-41e7-995f-0401c1f4fda8", filterTermId: this._selectedTerms[0].Id, levelToShowTerms: 2, useTermSetasRootNode: false }, context, initializeRegionTaxPicker); 
    // taxPickerIndex["#taxPickerCountry"] = 4; 
    //} 
} 

function initializeRegionTaxPicker() { 
    //if (this._selectedTerms.length > 0) { 
    // $('#taxPickerRegion').taxpicker({ isMulti: false, allowFillIn: false, useKeywords: false, termSetId: "0cc96f04-d32c-41e7-995f-0401c1f4fda8", filterTermId: this._selectedTerms[0].Id, levelToShowTerms: 3, useTermSetasRootNode: false }, context); 
    // taxPickerIndex["#taxPickerRegion"] = 5; 
    //} 
} 

function getValue(propertyName) { 
    if (taxPickerIndex != null) { 
     return taxPickerIndex[propertyName]; 
    } 
}; 

//function to get a parameter value by a specific key 
function getQueryStringParameter(urlParameterKey) { 
    var params = document.URL.split('?')[1].split('&'); 
    var strParams = ''; 
    for (var i = 0; i < params.length; i = i + 1) { 
     var singleParam = params[i].split('='); 
     if (singleParam[0] == urlParameterKey) 
      return singleParam[1]; 
    } 
} 

function chromeLoaded() { 
    $('body').show(); 
} 

//function callback to render chrome after SP.UI.Controls.js loads 
function renderSPChrome() { 
    var icon = decodeURIComponent(getQueryStringParameter('SPHostLogoUrl')); 

    //Set the chrome options for launching Help, Account, and Contact pages 
    var options = { 
     'appTitle': document.title, 
     'appIconUrl': icon, 
     'onCssLoaded': 'chromeLoaded()' 
    }; 

    //Load the Chrome Control in the divSPChrome element of the page 
    var chromeNavigation = new SP.UI.Controls.Navigation('divSPChrome', options); 
    chromeNavigation.setVisible(true); 
} 

回答

7

Type在MicrosoftAjax.js文件中定義。您可以通過以下script標籤從ASPNET CDN得到它訪問它:

<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js"></script> 

你不需要使用ScriptManager。

1

您加載SP.Runtime.jsSP.js兩次。一旦在頭上,準備文件。嘗試刪除其中的一個,但該錯誤可能是另一個我看到更多的錯誤之前404

+0

我刪除他們從HTML但沒有改變任何東西 – 2014-09-20 08:32:32

+0

嘗試添加的console.log(yourmessage)內部函數在巫點看到引發錯誤,我覺得有一些變種未初始化。 – Max 2014-09-20 20:45:43

1

你缺少的ScriptManager。把它放在上面<div id="divSPChrome"></div>

<asp:ScriptManager ID="ScriptManager" runat="server" EnableCdn="True" /> 

當您在HTML頁面的工作,只是試裝後的jQuery引用此。

<script src="https://ajax.aspnetcdn.com/ajax/4.0/MicrosoftAjax.js" type="text/javascript"></script> 
+0

這是一個不是aspx頁面的html頁面,頁面上沒有asp.net控件,爲什麼我需要它? – 2014-09-24 09:07:15

1

這很可能是由於您註冊腳本的順序。引用的庫應該在使用它們的腳本之前註冊。在瀏覽器中檢查您的頁面是最容易的,您會看到它們加載的順序。

相關問題