2017-01-07 12 views
0

私はJSファイルに変数(ハイライター)を定義しています。これを(同じJSファイルで定義する)角度コントローラー内で使用したいと思います。コントローラはそれを認識しません。オブジェクトを角度コントローラーに渡すことができません

私はいくつかの方法を試しましたが、それらはすべて失敗しました。私は少し混乱しています。 コードの関連部分と一般構造だけを貼り付けました。

(function() { 
    "use strict"; 
    var highlighter; 
    window.highlighter = highlighter; 
})(); 

(function(angular) { 
    'use strict'; 
    angular.module('myApp', ['ui.bootstrap']) 
.controller('Controller', function($scope, $window, $http) { 

$scope.highlighter1 = function(side, string, load) { 
       highlighter.deserialize(string);   
}; 
}) 
})(window.angular); 
+0

何が起こると予想されますか?正確にはどうなりますか?どのように初期化されていない蛍光灯のメソッドdeserialize()を呼び出すことができますか?なぜグローバル変数を使うのですか? –

+0

こんにちは。コントローラでは、$ windowグローバルオブジェクトを呼び出すことができます。 like $ window.highlighter –

+0

なぜあなたは 'window.highlighter'としてそれを割り当てていますか?ウィンドウオブジェクトにアタッチしたい場合は、 'window'オブジェクトスコープがグローバルであるため、角度コントローラ内で利用可能にする必要があります。 – superUser

答えて

1

あなたは生命維持で書いた無名関数にhighlighterの範囲を制限しています。角度のコードのスコープ内で使用可能な、それの範囲を持っているために、このようなことがグローバルます

var highlighter; 
window.highlighter = highlighter; 

(function(angular) { 
    'use strict'; 
    angular.module('myApp', ['ui.bootstrap']) 
.controller('Controller', function($scope, $window, $http) { 
    $scope.highlighter1 = function(side, string, load) { 
     highlighter.deserialize(string);   
    }; 
}) 
})(window.angular); 
0

あなたが(それはより持続的だ)のlocalStorageでそれを設定し、それをretriveしようとしたことがあり..:

(function() { 
    "use strict"; 
    var highlighter; 
localStorage.setItem('authorizationData', JSON.stringify(highlighter)); 

// window.highlighter = highlighter; 
})(); 

(function(angular) { 
    'use strict'; 
    angular.module('myApp', ['ui.bootstrap']) 
.controller('Controller', function($scope, $window, $http,exampleService) { 
var fromLocalStorage=exampleService.Get(); 
$scope.highlighter1 = function(side, string, load) { 
       highlighter.deserialize(string);   
}; 
}) 
})(window.angular); 

"use strict"; 

angular 
    .module("myApp") 
    .factory("exampleService", [ "$q", "localStorageService" 
function ($q, localStorageService) { 


    // Public Method 
    return { 
     Set: function (value) { 
     localStorageService.remove("authorizationData"); 
      localStorageService.set("authorizationData",value); 
      return localStorageService.get("authorizationData"); 
     }, 
     Get: function() { 

      return localStorageService.get("authorizationData"); 
     }, 

     Remove: function() { 
      localStorageService.remove("authorizationData"); 
     } 
    }; 
}]); 
関連する問題