Danh mục lưu trữ: Góc

Trouble-Shooting Tip cho góc chỉ thị (Hoặc, Học tập cho tình yêu dấu gạch ngang tất cả hơn một lần nữa)

Tôi có một vài ứng dụng mà làm cho $http.get() cuộc gọi và tôi muốn để có thể để hiển thị một thông báo lỗi độc đáo được định dạng với chi tiết lỗi xấu xí ẩn, nhưng có thể truy cập.  Về cơ bản, Điều này:

image

Và sau đó nếu người dùng nhấp vào lỗi, họ xem thêm thông tin:

image

Công cụ đơn giản.  Kể từ khi chính xác cùng một tiềm năng lỗi có thể xuất hiện trong màn hình hành chính cũng như màn hình người dùng cuối, nó rõ ràng gọi là một chỉ thị góc tùy chỉnh.  TÔI  Các mặt hàng này xuất sắc loạt Bài viết (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) bởi đại Dan Wahlin.  Theo lời khuyên của ông, Tôi rất nhanh chóng tạo ra một <Xin chào thế giới> chỉ thị và di chuyển trên của tôi squeegee lỗi hiển thị phức tạp hơn. Tôi chạy vào một chút rắc rối với chỉ thị này phức tạp hơn.  Hạnh phúc, loại do cơ hội, Tôi đã nói với WebStorm (trình biên tập tôi sử dụng những ngày này) các tập tin JS là một tập tin góc và nó đã giúp tôi tìm ra vấn đề.  Đây là mã cho chỉ thị chính nó:

angular.module("CDLApp").chỉ thị("generalCdlErrorHandler", chức năng() {

trở lại {
hạn chế: "E",
thay thế: sự thật,

phạm vi: {
retrieveLastConfigurationError: "&"
},

tiêu bản:
'<div class = "cảnh báo cảnh báo nguy hiểm" vai trò = "cảnh báo" ng-init = "doShowExpandedErrorDetails = true" ng Hiển thị = "retrieveLastConfigurationError()">' +
' Đã có một lỗi I/O hoặc lỗi khác. Điều này thường xảy ra bởi vì cấu hình dữ liệu tập tin có thể không ' +
' tìm thấy hoặc tập tin cấu hình chứa thông tin không chính xác (chẳng hạn như tham khảo một thư viện tài liệu ' +
' mà không tồn tại).' +
' <BR />' +
' <div ng-Hiển thị = "doShowExpandedErrorDetails">' +
' <một href = "#" ng nhấp chuột = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
'Bấm vào đây để ẩn chi tiết.' +
' </một>: ' +
' <BR />' +
' <trước>{{retrieveLastConfigurationError() | JSON}}</trước>' +
' <BR />' +
' </div>' +
' <div ng-Hiển thị = "!doShowExpandedErrorDetails">' +
' <một href = "#" ng nhấp chuột = "doShowExpandedErrorDetails = ! doShowExpandedErrorDetails">' +
'Bấm vào đây để mở rộng chi tiết lỗi.' +
' </một>' +
' </div>' +
'</div>'
};
});

Về cơ bản, Tôi là tạo ra một nguyên tố mới được gọi là một "generalCdlErrorHandler".  Nó cần quyền truy cập vào một chức năng gọi là retrieveLastConfigurationError và đó được xử lý trong phạm vi đối tượng.  Tôi có lẽ có thể chỉ cần sử dụng phạm vi của cha mẹ, nhưng mà cảm thấy lười biếng.  Nếu bất cứ ai nghĩ rằng tôi nên đã làm được mà, Tôi rất thích nghe về nó trong các ý kiến.

Điều này là tốt rồi, nhưng tôi đã không nhận được bất cứ điều gì.  Không có lỗi popped trong giao diện điều khiển (ít nhất một lần, tôi cố định tất cả các lỗi sx tôi tạo ra trên đường đi).  Tôi chỉ đơn giản là đã không nhận được bất kỳ đầu ra từ chỉ thị.  Tôi đã đi và thêm một số văn bản tĩnh trước khi chỉ thị về hiển thị và tôi * đã * nhận được rằng. Điều này làm cho tôi nghĩ rằng có lẽ chỉ thị không được phép để ngầm tạo mới vars như "doShowExpandedErrorDetails" hoặc có một "ng-init" trong đó. 

Tôi đi trở lại vào HTML để xem nếu tôi có một loại và thời gian này WebStorm giúp tôi.  Tôi đã đi qua trong các chức năng retrieveLastConfigurationError như thế này:

<Tổng-cdl-lỗi-xử lý retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</Tổng-cdl-lỗi-xử lý>

Nhưng nó thực sự cần thiết phải điều này:

<Tổng-cdl-lỗi-xử lý lấy-cuối-cấu hình-lỗi = "CDLController.retrieveLastConfigurationError()">
</Tổng-cdl-lỗi-xử lý>

WebStorm đã được thông minh, đủ để biết rằng nó đã được hyphenated.  Nếu nó đã không cung cấp gợi ý rằng, Tôi sẽ có lẽ vẫn còn khắc phục sự cố này Nụ cười.  Thú vị lần!

Bí quyết là đây: không chỉ yếu tố chỉ thị tên hyphenated, Vì vậy, là bất kỳ thuộc tính nào bạn thêm vào nó.  Một khi tôi thêm các dấu gạch ngang, Tất cả làm việc rất lớn.  Hướng dẫn của Dan đã xảy ra để sử dụng tên duy nhất ngắn, Vì vậy, tôi đã không làm cho các kết nối.

Hy vọng điều này sẽ giúp người nào đó.

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin

HTTP 406 Lỗi khi sử dụng góc $http.get chống lại SharePoint còn lại điểm

Cập Nhật: Marc quảng cáo ndersson chỉ ra này mảnh lớn của thông tin: http://Blogs.Office.com/2014/08/13/JSON-Light-support-Rest-SharePoint-API-Released/. Điều đó giải thích rất nhiều :).

Đó có thể là tên tồi tệ nhất của một bài đăng blog bao giờ! Anyhoo.

Tôi thường làm tất cả của tôi prototyping chống lại một thể hiện O365. Tôi có trường hợp cá nhân của tôi để tôi không cần phải lo lắng về ảnh hưởng đến bất cứ ai khác. Là một sang một bên-nhớ khi chúng tôi gọi mang xung quanh máy ảo trên máy tính xách tay của chúng tôi với RÊU-SQL Server, IIS, quyết định Hyper-V vs. VMWare? Anyhoo...

Tôi đã phát triển một ứng dụng bằng cách sử dụng góc trong môi trường này nào, trong số những thứ khác, Điều này:

$http.Get(serverUrl)
.thành công(chức năng(dữ liệu, tình trạng, tiêu đề, cấu hình) {

var getLinksResponse = dữ liệu;

getLinksResponse.value.forEach(chức năng(theResult) {

// và như vậy và như vậy tuyển

Điều này đã làm việc tốt trong hai khác nhau SharePoint môi trường trực tuyến. Tuy nhiên, Khi đồng nghiệp của tôi chuyển nó đến một trường hợp Cloudshare, ông đã nhận được một HTTP 406 lỗi (đó là lần đầu tiên tôi đã bao giờ nhận rằng một trong những, Vì vậy... yay, Tôi đoán). Chúng tôi đã làm một chút về nghiên cứu và nhận thấy rằng các tiêu đề "Chấp nhận" đã tắt. SharePoint trực tuyến là hoàn toàn hài lòng với:

Chấp nhận: ứng dụng/json

Nhưng trường hợp cloudshare (đó là SP trên prem, được tổ chức trong một máy chủ ảo) muốn cổ điển "odata = tiết" được thêm vào trong là tốt:

Chấp nhận: ứng dụng/json;oData = tiết

Để sửa chữa đó, chúng tôi thêm các tiêu đề như vậy:

var config = {tiêu đề: {
'Chấp nhận': ' ứng dụng/json;oData = tiết '
}
};

$http.Get(serverUrl,cấu hình)
.thành công(chức năng(dữ liệu, tình trạng, tiêu đề, cấu hình) {

var getLinksResponse = dữ liệu;

getLinksResponse.value.forEach(chức năng(theResult) {

// và như vậy và như vậy tuyển

Mà đã thoát khỏi các 406, nhưng nó cũng thay đổi định dạng của các phản ứng. Nó đã nhiều... tiết. (haha!) Nhiều thay đổi được yêu cầu và đây là kết quả cuối cùng:

var config = {tiêu đề: {
'Chấp nhận': ' ứng dụng/json;oData = tiết '
}
};

$http.Get(serverUrl,cấu hình)
.thành công(chức năng(dữ liệu, tình trạng, tiêu đề, cấu hình) {

var getLinksResponse = dữ liệu;

getLinksResponse.d.results.forEach(chức năng(theResult) {

// và như vậy và như vậy tuyển

Điều này chỉ biến thành một 30 Các vấn đề phút cho chúng tôi, Vì vậy chúng tôi lucked. Hy vọng rằng ai đó tìm thấy điều này hữu ích.

</kết thúc>

Làm thế nào để: Sử nhiều góc SharePoint Web phần trên cùng một trang

Blog này bài viết mô tả làm thế nào bạn có thể có nhiều Angular.js dựa SharePoint web phần (tham chiếu thông qua một trình soạn thảo nội dung web phần) trên cùng một trang. Tôi sẽ gọi cho một trình soạn thảo nội dung web phần (CEWP) mà tài liệu tham khảo các JavaScript được xây dựng bằng cách sử dụng khuôn khổ Angular.js một "góc Web phần."

Góc của quá trình bootstrap là siêu dễ dàng và chỉ là về mọi ví dụ mà bạn tìm thấy trên các internets đi một cái gì đó như thế này:

<HTML ng-app = 'myApp'>

<blah /><blah /><blah />

</HTML>

Điều này phá vỡ, Tuy nhiên, Nếu bạn muốn cho phép nhiều CEWP đại diện cho nhiều bộ phận web góc trên cùng một trang. Góc sẽ chỉ tự động bootstrap chống lại chỉ thị của ứng dụng đầu tiên nó tìm thấy – tối thiểu theo góc Phiên bản 1.3.6. Giải pháp là khá đơn giản-theo cách thủ công bootstrap mã của bạn để thay thế. Ở trên bây giờ thay đổi một cái gì đó như thế này:

<cơ thể>
<d
IV id =”bootstrapHere” ng-điều khiển =”myController như theController”>
<blah /><blah /><blah />
</div>
</cơ thể>

<script src =”//Ajax.googleapis.com/Ajax/libs/angularjs/1.3.6/Angular.js”></kịch bản>

<kịch bản>
angular.bootstrap(angular.Element(document.getElementById(“bootstrapHere”)),['myApp']);
</kịch bản>

Về cơ bản, thay vì sử dụng của ứng dụng trên các yếu tố làm bootstrapping của bạn, bạn slap một ID vào yếu tố đó. Sau đó, sử dụng bootstrap() Các phương pháp trên góc riêng của mình để kiểm soát các bootstrapping xử lý tại thời gian chạy. Tôi đã thử nghiệm này với ba bộ phận web góc khác nhau trên cùng một trang và nó hoạt động một nét duyên dáng.

</kết thúc>

undefinedĐăng ký vào blog của tôi.

Theo tôi trên Twitter lúc http://www.twitter.com/pagalvin