2017-03-07 69 views
1

早上好,我有一个小问题,我有指令:访问的角度指令范围内有两个数据bindigs

return { 
     restrict:'E', 
     scope: { 
      user: "=" 
     }, 
     template: '<b>{{userLogin}}</b>', 
     link:function(scope,elem,attrs){ 
     }, 
     controller: function ($scope) { 
      console.log($scope.user)//always undefindet 
      $scope.userLogin = $scope.user; 
     }, 
    }; 

,我想表明我的参数“用户”与范围,模板我必须使用控制器,因为我需要从服务器下载 一些数据,我认为问题是某处这里(指令):

scope: { 
       user: "=" //when i have this response "undefined" 
       user: "@" //when i have this response not show id only text 
      }, 

我的HTML

<get-user-login user="{{post.user_id}}"></get-user-login> 

我总是得到:空值或在控制台中未定义。 如何解决这个问题。

+0

检查'@'和'='之间的区别(http://stackoverflow.com/questions/ 14050195 /什么是在指令范围内的角度js?rq = 1) –

回答

0

当使用@你必须使用插值:

<get-user-login user="{{post.user_id}}"></get-user-login> 

注意@只用于文本值

鉴于

当使用=你不需要插值

<get-user-login user="post.user_id"></get-user-login> 

注意=仅用于传递对象(绑定双向)

+0

仍未定义 – Kaker

+0

请粘贴您的控制器代码,您传递给指令的值被定义。 –

+0

Kaker

0

我建立这个演示为你和它工作得很好:

<!DOCTYPE html> 
    <html lang="en" ng-app="app"> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.2/angular.min.js"></script> 
     <meta charset="UTF-8"> 
     <title>Document</title> 
    </head> 
    <body ng-controller="ctrl"> 

     <get-user-login user="post.user_id"></get-user-login > 
     <script> 

     angular.module("app",[]) 
      angular.module("app"). 
      controller("ctrl",function($scope){ 
       $scope.post = {user_id:565}; 
      }). 
      directive('getUserLogin', function() { 
       return { 
        restrict:'E', 
        scope: { 
         user: "=" 
        }, 
        template: '<b>{{userLogin}}</b>', 
        link:function(scope,elem,attrs){ 
        }, 
        controller: function ($scope) { 
        console.log($scope.user)//always undefindet 

         $scope.userLogin = $scope.user; 
        }, 
       }; 
      }); 
     </script> 
    </body> 
    </html> 
0

你确定你给正确的值指示?因为在getPost中,你将它绑定到$ scope.onePost,所以也许正确的方法是:

<get-user-login user="{{onePost.user_id}}"></get-user-login>