使用隔离范围depanding对象值定义自定义指令

时间:2015-09-09 04:40:57

标签: javascript angularjs angularjs-directive angularjs-scope

当我循环浏览它时,我的控制器中有人物类型的列表它工作正常,并从列表中显示所有人的姓名。 我已经定义了一个控制器来显示结构化数据的原因,但它不允许将自定义指令的范围绑定到人名的值 这件作品很好

   <div ng-app="myapp">
                    <div ng-controller="MyController">
                    <div ng-repeat="per in person">
                        <!-- <test user=" -->
                        {{per.firstName}}
                        <!-- "></test> -->
                    </div>

但是当我尝试将自定义指令的范围绑定到对象名字时,AngularJS会抛出错误

错误:[$ parse:syntax]语法错误:令牌&#39; {&#39;表达式[{{per.firstName}}]第2列的无效键,从[{per.firstName}}开始。

<div ng-repeat="per in person">
                    <test user=" {{per.firstName}}"></test>
                </div>
                </div>

          </div>

AngularJs cond:

var myapp=angular.module('myapp',[]);
myapp.controller('MyController',function($scope){
    $scope.person=[
    {firstName:"ali1",
    lastName:"ahmad"
    },
    {firstName:"ali2",
    lastName:"ahmad3"
    },
    {firstName:"ali4",
    lastName:"ahmad"
    },
    {firstName:"ali5",
    lastName:"ahmad"
    },
    ];
});



myapp.directive('test',function(){
    var directive={}
    directive.restrict="E";
    directive.template="Name : {{user.firstName}}";
    directive.scope={
        user:"=user"
    }
    return directive;

});

如何将自定义指令与object指令的值绑定。?

3 个答案:

答案 0 :(得分:1)

绑定到范围时,只需传递对象,不需要{{}},所以

user="per.firstName"

答案 1 :(得分:1)

更改此行

<test user=" {{per.firstName}}"></test>

<test user="person"></test>

在指令中使用ng-repeat。 首先将控制器中的数据发送到您的指令

<test user="person"></test>// Here you are sending whole array

然后收到您的user,其中包含person的引用 然后在你的指令里面接收user的某个变量,因为你在指令范围user: "=user"

中已经这样做了

答案 2 :(得分:1)

试试这个:

<test user="per"></test>

HTML:

myapp.directive('test', function () {
    return {
        restrict: 'E',
        scope: {
            user: '='
        },
        template: 'Name : {{user.firstName}}'
    };
});