2015-11-18 112 views
0

以下代碼運行良好,沒有問題。我唯一無法得到的是 -如何在AngularJS中控制從控制器到控制器的更改

每次按下按鈕時,我該如何控制console.log("CHECK ",vm.testvar);

工作Plnkr - http://plnkr.co/edit/BGdGgGaDXlKiZq2aaN00?p=preview

的script.js -

var myApp = angular.module('myApp', []); 

myApp.controller('mainCtrl', function($scope){ 
    $scope.test = 'my test string from controller'; 

    $scope.clicked = function() { 
    $scope.test = 'New - ' + Date.now(); 
    }; 
}) 

myApp.directive('mydir', function(){ 
    return { 
    restrict: 'E', 
    scope: { 
     testvar: '=' 
    }, 
    template: '<h1>Test Directive - {{vm.testvar}}</h1>', 
    controllerAs: 'vm', 
    replace: true, 
    bindToController: true, 
    controller: function() { 
     var vm = this; 

     console.log("CHECK ",vm.testvar); 
    } 
    }; 
}) 
+0

你試圖完成什麼,爲控制器調用控制檯日誌? –

+0

他每次點擊按鈕時都想註銷'vm.testvar'。基本上通過外部控制器引導指令內的響應 – jusopi

回答

1

有多種方法可以解決這個,但最快的方法也可能是最角1 * -ish是使用$scope.$watch方法:

controller: function ($scope) { 
    var vm = this; 

    $scope.$watch('vm.testvar', function(newValue){ 
    console.log('cHanged', newValue) 
    }) 

    console.log("CHECK ",vm.testvar); 
} 

http://plnkr.co/edit/KsrG5lgmtyKSGce5HZ6F?p=preview

+0

優秀我不知道,我可以在指令本身使用監視器.... thx很多:) –

+0

我不是一個智能指令,有隔離範圍和自定義控制器。我會使用它們,但我試圖按照大多數UX的'$ parse'。 – jusopi

+0

你可以傳遞一些我期待的鏈接,因爲我剛開始玩AngularJS –

1

您可以將$ scope傳遞給控制器​​並在vm.testvar上放置一個監視器。然後每當vm.testvar改變時,它都會調用它的函數。

controller: function (scope) { 
    var vm = this; 

    $scope.$watch('vm.testvar', function() { 
    console.log("CHECK ",vm.testvar); 
    }); 
}