2016-05-06 60 views
3

我已經創建了一個AngularJS指令,如下所示。 在相關控制器中,我計算變量text的值爲"SomeText"。我希望這個文本替換指令的template屬性中的Hello World!!。我該怎麼做?如何從控制器獲取傳遞值返回到AngularJS中的指令模板屬性?

我的HTML:

<myp-directive myarg="myObject"></myp-directive> 

我的指令:

myApp.directive('mypDirective',function(){ 
    return { 
     restrict:'E', 
     scope: { 
     myarg: '=' 
     }, 
     controller: 'DirectiveCtrl', 
     controllerAs: 'directiveCtrl', 
     bindToController: true, 
     template: 'Hello World!!' 
    }; 
    } 
); 

我的控制器:

myApp.controller('DirectiveCtrl', function($scope){ 
    var self = this; 
    $scope.$watch(function() {return self.prediction;}, function (newVal, oldVal) 
    { 
     if (newVal !== oldVal && newVal !== null){ 
      var text = "SomeText"; 
     } 
    }); 
}); 

回答

4

,這將是可用模板。

Pascal Precht寫了相當廣泛的explanation about controllerAs

控制器

myApp.controller('DirectiveCtrl', function($scope){ 
    var self = this; 
    self.text = "Hello World!!"; 
    $scope.$watch(function() {return self.prediction;}, function (newVal, oldVal) 
    { 
     if (newVal !== oldVal && newVal !== null){ 
      self.text = "SomeText"; 
     } 
    }); 
}); 

指令

myApp.directive('mypDirective',function(){ 
    return { 
     restrict:'E', 
     scope: { 
     myarg: '=' 
     }, 
     controller: 'DirectiveCtrl', 
     controllerAs: 'directiveCtrl', 
     bindToController: true, 
     template: '{{directiveCtrl.text}}' 
    }; 
    } 
); 
3

使用範圍。將文本'Hello World'綁定到作用域變量(數據),並將其作爲{{data}}在模板中綁定。從控制器更改範圍變量的值。

由於您使用的controllerAs: 'directiveCtrl'配置,你可以簡單地分配"SomeText"作爲控制器(個體經營)的可變看看這個fiddle

指令

myApp.directive('mypDirective', function() { 
    return { 
    restrict: 'E', 
    scope: { 
     myarg: '=' 
    }, 
    controller: 'DirectiveCtrl', 
    controllerAs: 'directiveCtrl', 
    bindToController: true, 
    template: '{{data}}', 
    link: function(scope, elem, attr, directiveCtrl) { 
     scope.data = "Hello World!!!" 
    } 
    }; 
}); 
+0

你是什麼意思 「綁定文本的Hello World」 嗎?你可以請示例代碼?我不希望HTML知道指令或此控制器的內部信息。 –

+0

我創建了一個小提琴來演示它 - http://jsfiddle.net/pratikjs/ocwujdvu/。 –

相關問題