除非你使用的角一些奇怪的版本,你的代碼不應該在所有的工作,因爲需要的module
第二個參數:
除非你已經定義myApp
(我」假設你沒有),上面的代碼就不能工作。當你定義一個模塊,第二個參數(相關性列表)要求:
angular.module('myApp', []); // this creates an app (setter)
angular.module('myApp'); // this creates gives you a reference to an already created app (getter)
否則,你的代碼似乎很好地工作:http://jsfiddle.net/cjWQB/
這就是說,這取決於你在做什麼(或者我可能不知道time
標籤是什麼),創建一個名爲time的元素指令(而不是屬性指令)可能更有意義。
更新:基於上述Fiddler,當您定義模塊時,您的ngApp
指令需要指向該命名模塊。唯一的一次<html ng-app>
將工作是當你正在做一個更簡單的辦法,只是使用像控制器功能:
HTML
<html ng-app>
<div ng-controller="TestCtrl">...</div>
</html>
的JavaScript
function TestCtrl($scope) {
}
編輯
基於你的問題的變化,因爲你現在正在使用一個元素指令,所以你需要取消日期從不同的地方。正如馬克在上面的意見建議,那個地方是scope.temporal
:http://jsfiddle.net/Ns2Ny/4/
但在你的指令直接引用temporal
並沒有真正使其可重複使用,所以你會喜歡要多走一英里,並使用$watch
間接引用它的價值,並保持標籤:
http://jsfiddle.net/Ns2Ny/5/
angular.module('myApp',[])
.controller('temporalCtrl', function($scope) {
$scope.temporal = "2012-11-10T12:00:00Z";
})
.directive('time', function() {
return {
restrict: 'E',
link: function (scope, el, at) {
console.log('scope', scope);
console.log('at', at);
scope.$watch(at.datetime, function (newValue) {
el.text((new Date(newValue)).toDateString());
});
}
};
});
請記下我的console.log
語句。在調試時瞭解scope
和at
中的內容非常有用。
有這裏涉及到一個模型?你可以分享一個笨蛋,小提琴 – Chandermani 2013-05-13 14:27:37
我沒有使用模型,因爲我只希望視圖隨數據更改(不是雙向綁定)。我試圖把它變成小提琴,但我失敗了。這是我到目前爲止:http://jsfiddle.net/jphastings/Ns2Ny/ – 2013-05-13 14:39:00
@JP你需要'ng-app =「myApp」'在該Fiddle中 - 你的console.log語句永遠不會執行,因爲它是沒有在正在使用的Angular應用程序中定義。 – Langdon 2013-05-13 14:42:11