2012-07-08 33 views
5

我在我的第一個項目AngularJS工作使用jQuery插件。我很喜歡它,但現在我掛了。在AngularJS查看

我的項目的結構是這樣的,我在我的index.html中有一個單獨的ng-view,它是根據當前路由填充單獨的HTML模板/部分。

在我想使用jQuery DateFormat plugin格式化正在使用的角度表達解析到模板/局部一個SQLite日期時間字符串的泛音之一:

{{ find.addDate }} 

我已經包括與所述插件index.html中的腳本標籤,我想從那裏它會在我的模板做這樣的事情簡單/部分:

{{ $.format.date(find.addDate, "dd/MM/yyyy") }} 

或許:

{{ angular.element.format.date(find.addDate, "dd/MM/yyyy") }} 

這不起作用(我確定這很明顯,爲什麼你們中的一些人),但控制檯中沒有錯誤,我非常難以接近它。我做了一些谷歌搜索與像「在角第三方腳本」或「jQuery插件angularjs」等條件,但無法找到如何做到這一點的正確方式最近的代碼示例。

我的確發現了一些使用angular.widget的舊代碼,但似乎在1.0+版本中已被棄用。我想我需要使用一個指令,但我無法完全弄清楚。

我真的希望作出解釋或簡單的例子吧。非常感謝!

回答

10

問題是,當你在一個模板做{{表達式}},它計算它在當前範圍。

舉例來說,如果你有這樣的控制器:

function MyCtrl($scope) { 
    $scope.find = { 
     addDate: 2030 
    }; 
} 

{{find.addDate}}會在現實中找$scope.find.addDate,並評估它(在這種情況下,返回2030)。

因此,當您嘗試執行{{ $.format.date(find.addDate, "dd/MM/yyyy") }}時,角度查找$scope.$.format.date(find.addDate, "dd/MM/yyyy"),這不存在。

嘗試這樣的事情,而不是在你的控制器使用功能:

function MyCtrl($scope) { 
     $scope.find = { 
      addDate: 2030 
     }; 
     $scope.formatDate = function(input, format) { 
      return $.format.date(input, format); 
     } 
    } 

然後你就可以在你的HTML,你可以做這樣做:{{formatDate(find.addDate, "dd/MM/yyyy")}}

你也可以評價它作爲你的標記過濾器,因爲它只是需要一個輸入,並改變它:{{find.addDate | formatDate:"dd/MM/yyyy"}}

+0

我肯定過想這一個。非常感謝您的解釋和簡單的解決方案! – Trae 2012-07-08 03:08:24