代碼適用於jsfiddle(關於代碼的知識)

本文目錄一覽:

php中可以用angularjs的指令嗎?

摘要:使用過AngularJS的朋友應該最感興趣的是它的指令。現今市場上的前端框架也只有AngularJS擁有自定義指令的功能,並且AngularJS是目前唯一提供Web應用可復用能力的框架。目前有很多JavaScript產品提供插… SyntaxHighlighter.all();…

使用過 AngularJS 的朋友應該最感興趣的是它的指令。現今市場上的前端框架也只有AngularJS 擁有自定義指令的功能,並且AngularJS 是目前唯一提供Web應用可復用能力的框架。

目前有很多JavaScript 產品提供插件給Web開發人員。例如, Bootstrap 就是當前比較流行的提供樣式和JavaScript插件的前端開發工具包。但是開發人員在使用Booostrap中的插件時, 必須切換到JavaScript 模式來寫 jQuery 代碼來激活插件雖然jQuery 代碼寫起來十分簡單,但是必須和HTML進行同步,這是一個單調乏味且容易出錯的過程。

AngularJS主頁展示了一個簡單的例子,用於實現Bootstrap中的 Tab功能,可以在頁面中輕鬆添加 Tab 功能,並且使用方法和 ul 標籤一樣簡單。HTML代碼如下:

複製代碼

body ng-app=”components”

h3BootStrap Tab Component/h3

tabs

pane title=”First Tab”

divThis is the content of the first tab./div

/pane

pane title=”Second Tab”

divThis is the content of the second tab./div

/pane

/tabs

/body

複製代碼

JavaScript代碼如下:

複製代碼

angular.module(‘components’, []).

directive(‘tabs’, function() {

return {

restrict: ‘E’,

transclude: true,

scope: {},

controller: [ “$scope”, function($scope) {

var panes = $scope.panes = [];

$scope.select = function(pane) {

angular.forEach(panes, function(pane) {

pane.selected = false;

});

pane.selected = true;

}

this.addPane = function(pane) {

if (panes.length == 0) $scope.select(pane);

panes.push(pane);

}

}],

template:

‘div class=”tabbable”‘ +

‘ul class=”nav nav-tabs”‘ +

‘li ng-repeat=”pane in panes” ng-class=”{active:pane.selected}”‘+

‘a href=””

‘/li’ +

‘/ul’ +

‘div class=”tab-content” ng-transclude/div’ +

‘/div’,

replace: true

};

}).

directive(‘pane’, function() {

return {

require: ‘^tabs’,

restrict: ‘E’,

transclude: true,

scope: { title: ‘@’ },

link: function(scope, element, attrs, tabsCtrl) {

tabsCtrl.addPane(scope);

},

template:

‘div class=”tab-pane” ng-class=”{active: selected}” ng-transclude’ +

‘/div’,

replace: true

};

})

複製代碼

你可以從以下鏈接查看效果:

image

正如你所見,除了擁有用於實現指令的 tabs 和pane 標籤,頁面和常規HTML頁面沒有什麼區別。HTML開發人員無需編寫任何代碼。當然,總需要有第一個吃螃蟹的人,創建指令共享使用,但是目前Tabs指令已經很常見了,可以在任何地方復用(如BootStrap,、jQueryUI、Wijmo, 和一些知名的前端插件集)。

由於指令的易用和易編寫,許多用戶已經開始使用AngularJS編寫指令了。例如, AngularJS 開發組已經基於AngularJS實現了一系列指令-UI Bootstrap 來代替Bootstrap; 知名ComponentOne 控件廠商也在AngularJS 基礎上創建了Wijmo ;我們也可以在GitHub上找到一些公共指令資料庫:jQueryUI widgets。

擁有了 AngularJS,是不是覺得自己已經站在了巨人的肩膀上了?但是不要高興的太早,如果已經有了這麼多的指令供我們使用,那我們為什麼還要學習AngularJS ,為什麼還要學習自定義指令呢?

舉個簡單的例子,也許你有特殊的需求:假設你在一家財務公司工作,你需要創建一張財務表單,它需要以表格的形式展示數據、擁有綁定、編輯、校驗並且同步數據更新到服務器的功能。表單插件很常見但是能夠滿足這些具體需求的不得而知了,所以你必須根據實際業務需求來創建自定義指令。

複製代碼

body ng-app=”abcFinance”

h3Offshore Investment Summary/h3

abc-investment-form

customer=”currentCustomer”

country=”currentCountry”

/abc-investment-form data

/body

複製代碼

這就是本篇文章的目的,接下來我們會討論如何創建 AngularJS指令。

創建自定義AngularJS 指令

文章開頭的自定義指令十分的簡單。它僅僅實現了同步的功能。一般指令是包含更多元素的:

複製代碼

//創建指令模塊 (或者檢索現有模塊)

var m = angular.module(“myApp”);

// 創建”my-dir”指令

myApp.directive(“myDir”, function() {

return {

restrict: “E”, // 指令是一個元素 (並非屬性)

scope: { // 設置指令對於的scope

name: “@”, // name 值傳遞 (字符串,單向綁定)

amount: “=”, // amount 引用傳遞(雙向綁定)

save: “” // 保存操作

},

template: // 替換HTML (使用scope中的變量)

“div” +

” {{name}}: input ng-model=’amount’ /” +

” button ng-click=’save()’Save/button” +

“/div”,

replace: true, // 使用模板替換原始標記

transclude: false, // 不複製原始HTML內容

controller: [ “$scope”, function ($scope) { … }],

link: function (scope, element, attrs, controller) {…}

}

});

複製代碼

效果如下:

image

注意這個自定義指令遵循一種格式:以”my” 為前綴,類似於命名空間,因此如果你在應用中引用了多個模塊指令,你可以通過前綴很容易的判斷出它是在哪定義的。這不是硬性要求,但是這樣做可以帶來很多便利。

指令的構造函數會返回帶有屬性的JavaScript 對象。這些內容在AngularJS 主頁中都有清晰說明。以下是我對一些屬性的理解:

restrict: 說明指令在HTML中的應用形式,備選項有”A”、”E” 和 “C”, “M” ,分別代表 attribute、element、class和comment(默認值為”A”)。我們將更多的關注attributes-如何創建UI元素。

scope: 創建指令的作用範圍,scope在指令中作為屬性標籤傳遞。Scope 是創建可以復用指令的必要條件,每個指令(不論是處於嵌套指令的哪一級)都有其唯一的作用域,它不依賴於父scope。scope 對象定義names 和types 變量。上面的例子即創建了3個scope變量。

name: “@” (值傳遞,單向綁定):

“@”符號表示變量是值傳遞。指令會檢索從父級scope中傳遞而來字符串中的值。指令可以使用該值但無法修改,是最常用的變量。

amount: “=” (引用,雙向綁定)

“=”符號表示變量是引用傳遞。指令檢索主Scope中的引用取值。值可以是任意類型的,包括複合對象和數組。指令可以更改父級Scope中的值,所以當指令需要修改父級Scope中的值時我們就需要使用這種類型。

save: “” (表達式)

“”符號表示變量是在父級Scope中啟作用的表達式。它允許指令實現比修改值更高級的操作。

template: 替代原始模板中的標記的字符串。替換功能將替換所有舊元素為新值。注意template是如何使用Scope中定義的變量的。這允許你無需寫任何額外的代碼即可創建macro-style 風格指令。replace: 說明是否替換原始標記中的值或是追加原始標記中的值。默認值是false,這時原始標記將被保留。

transclude: 說明自定義指令是否複製原始標記中的內容。例如,之前展示的“tab”指令設置了transclude 為 true,因為tab 元素包含其他HTML 元素。 “dateInput” 指令則需要在初始化時為空,所以需要設置transclude 為false。

link: 該方法在指令中扮演着重要的角色。它負責執行DOM 操作和註冊事件監聽器等。link 方法包含以下參數:

scope: 指令Scope的引用。scope 變量在初始化時是不被定義的,link 方法會註冊監視器監視值變化事件。

element: 包含指令的DOM元素的引用, link 方法一般通過jQuery 操作實例(如果沒有加載jQuery,還可以使用Angular’s jqLite )。

controller: 在有嵌套指令的情況下使用。這個參數作用在於把子指令的引用提供給父指令,允許指令之間進行交互, tab 指令就是使用該參數較典型的例子:

注意,當調用link 方法時, 通過值傳遞(”@”)的scope 變量將不會被初始化,它們將會在指令的生命周期中另一個時間點進行初始化,如果你需要監聽這個事件,可以使用scope.$watch 方法。

html中一個標籤的末尾含有很多空格,在瀏覽器中首行沒有到達邊界就換行了

你body上有600px的寬啊,還有你寫這個 為了展位,你還不如寫寬度呢,你設置一個高度,他不就有3行空白了

你的意思是這個不

html 當文本框未輸入時點按鈕,旁邊出現紅色警告字怎麼寫求代碼

html

head

meta http-equiv=content-type content=”text/html;charset=GBK”

/head

body

form action=”” method=”post” onsubmit=”return check(this)”

label id=”msg” style=”color:red;font-size:12pt;”/label

br/

用戶名:input name=”username”/

br/

密 碼:input type=”password” name=”username”/

br/

input type=”submit” value=”提交”/

/form

/body

script

function check(form){

return (function(node){

// 如果已經沒有需要校驗的子節點,則推出遞歸

if(!node) return true;

// 判斷子節點類型,這裡我們只需要校驗text和password類型文本

if(/((text)|(password))/i.test(node.type)){

var isEmpty = node.value.length == 0;

// 校驗文本是否為空

if(isEmpty){

caution(node); return false;

}

}

// 使用遞歸來遍歷下一個節點

return arguments.callee(node.nextSibling);

})(form.firstChild);

}

function caution(node){

document.getElementById(“msg”).innerHTML = “請填寫賬號”;

node.focus();

}

/script

/html

jsfiddle怎麼演示ajax 使用技巧

首先要在頁面引入相關的js庫,然後在textarea 裡面放入要執行的代碼,然後eval(document.getElementById(‘interactiveEmitCode’).value)代碼如下:

textarea id=”interactiveEmitCode” rows=”20″ cols=”100″

var ps = new ParticleSystem();

ps.effectors.push(new ChamberBox(0, 0, 400, 400));

var dt = 0.01;

else

newMousePosition = new Vector2(e.offsetX, e.offsetY);

};

/textarea

br /

button onclick=”eval(document.getElementById(‘interactiveEmitCode’).value)” type=”button”Run/button

button onclick=”stop();” type=”button”Stop/button

br /

canvas id=”interactiveEmitCanvas” width=”400″ height=”400″/canvas

優點:可以在本頁面編輯代碼,並且看到實時效果,

缺點:頁面需要引用相關js庫,和本頁代碼邏輯混在一起。代碼顏色黑白顯示,用戶體驗差

b.岑安方式和司徒正美方式,如下圖:

把代碼放到一個iframe中,然後再新開頁面執行該頁面的代碼。相關代碼如下:

script type=”text/javascript”

function runCode(id) {

obj = document.getElementById(id);

var TestWin=open(”); //打開一個窗口並賦給變量TestWin。

TestWin.opener = null // 防止代碼對論談頁面修改

TestWin.document.write(obj.value); //向這個打開的窗口中寫入代碼code,這樣就實現了運行代碼功能。

TestWin.document.close();

}

/script

優點:邏輯分離,可以編輯運行。

缺點:需要新開頁,代碼黑白顯示,用戶體驗差

C.外鏈方式

優點:不與本頁html,css,js出現衝突,只要給出外鏈,不能編輯代碼。

缺點:需要想SAE上傳相關的js、img、css和html

D.jsFiddle方式,我直接拿岑安方式的代碼作為例子:效果如下

這裡有個小技巧:上面看到的iframe指定的src為”

最後的result,js,html,css為iframe中tab的顯示的順序,或者你不想顯示html,css,你就可以直接寫成

效果如下:

也可以顯示result js和html,效果如下:

四.總結

比較這四種方式,我最喜歡最後一種,我相信喜歡最後一種的多一些,因為不僅演示的代碼和博客的代碼分離,html和CSS和js和最終效果也分離開了·

前端常用的幾種在線代碼編輯器各有什麼優勢

jsfiddle

Create a new fiddle

最經典的的編輯器了,主要寫頁面,沒有集成console不太方面調JS

jsbin

JS Bin

跟jsfiddle差不多,有自帶console挺適合調JS的,我最近幾篇專欄文章的代碼都是放在jsbin里的,可以方便的到處到gist很不錯。但是存snapshot有點不清楚(反正我是還沒弄清楚)。Node快閃 御用。

plunker

這個好像國內用的人不多,難道是被牆了?這是我見過的最貼近真實開發環境的ide,所有html js css文件一覽無遺,不像jsfiddle一樣隱藏html和body元素。要是有console就更好了。Angular1文檔御用。

repl.it

Online REPL, Compiler IDE

這個大家可能見的不多,多語言環境,JS的是純console環境,布局很乾凈,調JS挺好的。

codepen

CodePen

這個跟jsbin差不多,好像上面的代碼大多數是CSS相關的。御用。

hackerrank

HackerRank

這個嚴格說是個比賽/面試環境,實時性不錯,其它跟jsfiddle大同小異。我司電面御用。

runkit

RunKit is Node prototyping

這個是node編程用的,在線require( )各種包,看上去挺屌的,我還沒怎麼玩過。npm御用。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/301490.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-30 16:09
下一篇 2024-12-30 16:09

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在着手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29
  • Python愛心代碼動態

    本文將從多個方面詳細闡述Python愛心代碼動態,包括實現基本原理、應用場景、代碼示例等。 一、實現基本原理 Python愛心代碼動態使用turtle模塊實現。在繪製一個心形的基礎…

    編程 2025-04-29

發表回復

登錄後才能評論