2015-09-01 120 views
0

在我的指令中引用控制器時。該模板無法正確呈現。
$scope.name = "James". 取而代之的是,模板顯示「{{name}}」,因此不綁定到範圍。 如何讓我的模板顯示名稱?我想在我的指令中引用控制器,我不想在我的指令中定義一個控制器。指令 - 範圍不綁定到templateurl,angularjs

錯誤我收到:錯誤:[NG:AREQ]參數 'FN' 不是一個函數,得到了串

HTML模板

<div id="room-availability-widget"> 

    {{name}} 
</div> 

指令

app.directive("roomAvailability", ["backEndServerUrl", "hubName", function (serverUrl, hubName) { 
    return { 
     restrict: 'E', 
     templateUrl: 'Widgets/RoomAvailability/Template.html', 
     scope: {}, 
     controller: 'clientHandlers' 
    } 
}]); 

控制器

app.controller('clientHandlers', ["$scope", function clientHandlers($scope)  
{ 

    $scope.name = "James"; 
}]) 

索引視圖

<room-availability></room-availability> 

更新 普拉克:http://plnkr.co/edit/mVMN65bx7OT70OwSOllW?p=preview

+1

在Plunkr上發佈了一個完整的例子。併發布完整的錯誤堆棧跟蹤。告訴我們它指的是哪一行代碼。另外,在指令中注入serverUrl和hubName是否有用,因爲它根本不使用它們? –

+0

請幫助.... –

回答

-1

可以解決多種方式這個問題,但我能想到的下面現在

// Code goes here 
 

 
var app = angular.module("RoomAvailabilityWidget", []) 
 
    
 
app.directive("roomAvailability", function() { 
 
    return { 
 
     restrict: 'E/A', 
 
     templateUrl: 'Template.html', 
 
     scope: {name: '@'}, 
 
     controller : function($scope){ 
 
      //$scope.selectedFile = "No files selected"; 
 
      $scope.name = 'james' 
 
     } 
 
    } 
 
});

Plunker到http://plnkr.co/edit/xnpq83akxbDF8m6oy1Bj?p=preview

希望這有助於

+0

如果控制器值是一個名稱,Angular會爲您找到控制器。 – Joy

0

基本上,只要你Plunker沒有良好的組織。檢查這一個:Plunker

你的角度進口線:

<script data-require="[email protected]*" data-semver="2.0.0-alpha.31" src="https://code.angularjs.org/2.0.0-alpha.31/angular.js"></script> 

不工作。因爲https://code.angularjs.org/2.0.0-alpha.31/angular.js不存在。我做你的plunker什麼:

  1. 我換到的1.x版本。
  2. 刪除未知提供商serverUrl, hubName
  3. 將模板網址從Widgets/RoomAvailability/Template.html更改爲Template.html

建議:每當您的代碼失敗時,檢查控制檯上的錯誤。