2015-10-03 48 views
0

我的想法是使模板(對於問題)可以在旁邊元素中選擇。

爲了在angularjs中創建一個旁路元素,我嘗試了dbtek/angular-aside。這工作相當不錯,但我的問題是,我必須將模板存儲在一個額外的模板文件中,我需要更改現有的$ scope變量(以在表單中設置模板)。

實施例:

create_question.html(按鈕打開擱置元件&顯示模板變量)

<button type="button" class="btn btn-default btn-lg" ng-click="openAside('left')"> 
    <span class="glyphicon glyphicon-align-justify"></span> Right 
</button> 

Choosen template is {{choosenTemplate}} 

create_question.js(VAR爲choosen模板,函數打開擱置元件&函數來更改模板var)

$scope.choosenTemplate = 0; // 0 = default 

$scope.openAside = function(position) { 
    $aside.open({ 
    templateUrl: 'aside.html' 
    placement: position, 
    backdrop: true, 
    controller: function($scope, $modalInstance) { 
     $scope.ok = function(e) { 
     $modalInstance.close(); 
     e.stopPropagation(); 
     }; 
     $scope.cancel = function(e) {     
     $modalInstance.dismiss(); 
     e.stopPropagation(); 
     }; 
    } 
    }) 
}; 

$scope.setTemplate = function(templateNumber) 
{ 
    $scope.choosenTemplate = templateNumber; 
} 

aside.html(模板aside元素 - 內容無關)

<div> 
    <button ng-click="setTemplate(2)">Template 2</button> 
</div> 

的擱置元件被示出,但是當我按下按鈕的功能不會被調用。

當我改變

aside.html

<div ng-controller="CreateQuestionCtrl"> 
    <button ng-click="setTemplate(2)">Template 2</button> 
</div> 

函數被調用,但現在我有兩個不同的$範圍(我認爲)?而且我只能改變錯誤的$ scope元素(在旁邊)。

闖闖是設置的模板在<script> - 元素這樣的:

<script type="text/ng-template" id="aside.html"> 
    <button ng-click="setTemplate(2)">Template 2</button> 
</script> 

,並設置create_question.html這裏面的元素,但現在我不能再次調用該函數。

有沒有人有一個想法,我可以在「兩個不同的」頁面上有相同的$範圍?兩者都在同一頁面上,但我不能真正訪問相同的$範圍。

回答

2

可能有更好的方法來在主控制器和旁路控制器之間進行通信,但它可能按原樣運行。

$aside只是ui-bootstrap $modal的一個包裝。上面的例子並不使用scope parameter

scope - 用於模態的內容的作用域實例(實際上 的$模式服務將創建一個提供 範圍的子範圍)。默認爲$ rootScope

設置模態和父控制器作用域之間的關係是非常重要的。

$aside.open({ 
    scope: $scope, 
    ... 

應該讓應用程序正常運行。