的jsfiddle:http://jsfiddle.net/3gd8a/1/角適用範圍變更
(function() {
var app = angular.module("index", []);
app.run(function ($log, $controller) {
$log_service = $log;
$controller_service = $controller;
});
app.controller("AlertsController", function() {
this.alerts = [ "first alert" ];
this.innerFunction = function() {
this.alerts.push("inner alert");
$log_service.debug(alerts.alerts);
};
});
})();
function outerFunction() {
var alerts = $controller_service("AlertsController");
alerts.alerts.push("outer alert");
$log_service.debug(alerts.alerts);
};
在這個例子中,我在外部JS功能改變控制器實例的屬性,
現在我也不已知我怎麼可以像使用$ scope.apply()一樣來應用它。
我已經閱讀角提示手錶如何最適用,運行-A-消化,
$範圍有$應用功能,但控制器實例沒有之一。
您可能想問爲什麼我使用控制器實例不是$ scope,因爲我學習的角度js來自codeschool,所以我想用我學會的同樣的方法,如果可能的話。
你可能想問爲什麼不使用ng-click,我知道使用ng-click會工作,但我想知道角度js如何監視控制器實例的屬性以及如何手動應用它們的更改。
編輯:
我想通了控制器實例是剛剛任命alerts
在$範圍,當我通過ng-controller="AlertsController as alerts"
使用它的屬性。
現在我有另一個問題,如果我從outerFunction訪問$範圍將導致一個錯誤。
第一次是Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope http://errors.angularjs.org/1.2.1/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope angular.js:78
而第二次是 Error: [$injector:cdep] Circular dependency found: http://errors.angularjs.org/1.2.1/$injector/cdep?p0=
編輯後的版本:http:// jsfiddle。net/3gd8a/5/ – user3085220
最後版本http://jsfiddle.net/3gd8a/6/,我應該通過控制器下的元素來獲取範圍。 – user3085220