2017-01-07 72 views
-2

我在Controller中找到了,我們使用$ scope,這裏是鏈接(http://www.w3schools.com/angular/tryit.asp?filename=try_ng_controller)。 我改變$範圍到這個,它不能工作。

<script> 
var app = angular.module('myApp', []); 
app.controller('myCtrl', function($scope) { 
    $scope.firstName = "John"; 
    $scope.lastName = "Doe"; 
}); 
</script> 

但是,我發現在服務,我們利用這一點,這裏是鏈接(http://www.w3schools.com/angular/tryit.asp?filename=try_ng_services_custom)。 在hexafy服務中,我將其更改爲$ scope,它無法工作。

<script> 
var app = angular.module('myApp', []); 

app.service('hexafy', function() { 
    this.myFunc = function (x) { 
     return x.toString(16); 
    } 
}); 
app.controller('myCtrl', function($scope, hexafy) { 
    $scope.hex = hexafy.myFunc(255); 
}); 
</script> 

我的上述總結是否正確?如果不是的話,考慮到各種可能的情況應該是什麼正確的總結。

+0

檢查此問題http://stackoverflow.com/questions/11605917/this-vs-scope-in​​-angularjs-controllers –

回答

0

您可以在控制器中使用這個而不是$ scope。他們將控制器作爲語法(來自Angular 1.2)。您可以附加數據到這個(這裏控制器保存數據)。但在內部它只會附加到$範圍,但您不必手動附加它。它必須像這樣在html中聲明,控制器被聲明爲main,所以我們必須使用main來引用html中的數據。

<div ng-controller="MainCtrl as main"> 
    {{ main.title }} 
</div> 

app.controller('MainCtrl', function ($scope) { 
    this.title = 'Some title'; 
    console.log("Title" + $scope.main.title); // It will print some title in the console. 
}); 
+0

謝謝。我有。但是,我們可以使用$ scope而不是Service嗎? – AngularJS

+0

是的,你可以使用它 –

+0

謝謝。我試過了,它有效。對於Serice和Controller,您建議使用哪一個或$ scope? – AngularJS

相關問題