我想寫一個list
利用directive來寫一個item
這個item要根據(jù)賦予的不同的值產(chǎn)生相應(yīng)變化 但目前我只知道簡單的數(shù)據(jù)賦值
例如
.directive('al-item', function() {
return {
restrict: 'EA',
template: '
<p>'
+'</p>
',
replace: true,
controller: function($scope, $element, $attrs, $transclude) {
//這里根據(jù)a、b、c 三者的值 進一步修飾al-item
}
};
})
<al-item a='' b='' c=''>
我希望的形式 更像是
<al-item object=''>
這樣提供一個object數(shù)據(jù)
al-item就能實現(xiàn)我預(yù)定的樣子
請問這可以實現(xiàn)嗎?
你可以看下關(guān)于指令的 scope部分,可以解決你的疑問。
大概:
html
<p ng-controller="cc"> <al-item object="obj"></al-item> </p>
js
angular.module('xx', []) .controller('cc', ['$scope', function($scope) { $scope.obj = {a:'a', b:'b', 'c':'c'} }]) .directive('alItem', function() { return { restrict: 'EA', template: '<p>'+'</p>', replace: true, transclude: true, scope: { object: "=" }, controller: function($scope, $element, $attrs, $transclude) { //scope.object 這里就可以判斷了 } }; })
大概這樣吧 詳細的可以看官方文檔了
directive 的 scope 本身就支持三種模式
1. "=" 任何對象
2. "&" 外部的方法傳入 directive 內(nèi)部調(diào)用
3. "@" 字符串
html里面的object也是一個attrs, 在function 里已經(jīng)調(diào)入attrs,可以用attrs直接調(diào)用object。