猿问

Angular中的directive指令是否能接受object类型的赋值?

我想写一个list
利用directive来写一个item
这个item要根据赋予的不同的值产生相应变化 但目前我只知道简单的数据赋值
例如

.directive('al-item', function() {    return {
        restrict: 'EA',
        template: '

<div>'
                 +'</div>

',
        replace: true,
        controller: function($scope, $element, $attrs, $transclude) {            //这里根据a、b、c 三者的值 进一步修饰al-item
        }
    };
})

<al-item a='' b='' c=''>

我希望的形式 更像是

<al-item object=''>

这样提供一个object数据
al-item就能实现我预定的样子
请问这可以实现吗?


慕雪6442864
浏览 551回答 3
3回答

慕容森

你可以看下关于指令的 scope部分,可以解决你的疑问。大概:<div&nbsp;ng-controller="cc"><al-item&nbsp;object="obj"></al-item></div>angular.module('xx',&nbsp;[]) .controller('cc',&nbsp;['$scope',&nbsp;function($scope)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$scope.obj&nbsp;=&nbsp;{a:'a',&nbsp;b:'b',&nbsp;'c':'c'} }]) .directive('alItem',&nbsp;function()&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;restrict:&nbsp;'EA',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;template:&nbsp;'<div>'+'</div>',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;replace:&nbsp;true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transclude:&nbsp;true,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scope:&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object:&nbsp;"=" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;controller:&nbsp;function($scope,&nbsp;$element,&nbsp;$attrs,&nbsp;$transclude)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//scope.object&nbsp;这里就可以判断了 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}; })大概这样吧 详细的可以看官方文档了

翻阅古今

directive 的 scope 本身就支持三种模式1. "=" 任何对象2. "&" 外部的方法传入 directive 内部调用3. "@" 字符串

守着一只汪

html里面的object也是一个attrs, 在function 里已经调入attrs,可以用attrs直接调用object。
随时随地看视频慕课网APP

相关分类

AngularJS
我要回答