Angular+JQ

by basarat

HTML

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js"></script>
<div ng-app="myApp" ng-controller="MyCtrl">
    <yo promise="promise" noreally="noreally()"></yo>
    <button ng-click="func()">click me</button>
</div>

JavaScript

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

function MyCtrl($scope,$q,$timeout){
    
    var defer = $q.defer(); 
    
    $scope.promise=defer.promise;
    
    $scope.noreally= function(){ return defer.promise };
    
    $scope.func = function(){     
        defer.resolve("resolved value");
    }   
    
}

app.directive('yo',function(){
    return {
        restrict:'E',
        scope:{
            promise:"=",
            noreally:"&",
        },
        link:function (scope,element,attrs){
            scope.$watch('promise',function(){
                if(!scope.promise) return; 
                
                // fails
                //scope.promise.then(function(){
                //    alert('you promised');
                //});
            });
            
            //works
            scope.noreally().then(function(){
                alert('you promised');
            });
        }
    }
});