這個問題確實包含兩個:
1 - 函數是否在javasript中創建它們自己的$作用域?
e.g.$scope.foo = function() {
$scope.bar = "Bar";
}
我問這個,因爲在這樣一個測試,我試圖運行我檢查,以確定該作用域的變量的存在,運行一個函數,然後重新檢查:
iit('getPatientFirstName should attach patientName to the scope', function() {
// Passes
expect(scope.patientName).toBeUndefined();
spyOn(scope,'getPatientFirstName').andCallThrough();
scope.getPatientFirstName(detailsBody);
// Fails
expect(scope.patientName)not.toBeUndefined();
});
// In the controller
$scope.getPatientFirstName = function (dataBody) {
$scope.patientName = dataBody.patientFirstName;
};
所以這表明他們可能有自己的範圍?如果是這種情況,我們可以測試一下嗎?
2 - 是一個有效的替代只是使用存在的功能之外的對象:
$scope.patientDetails = {
patientName: ''
};
$scope.getPatientFirstName = function (dataBody) {
$scope.patientDetails.patientName = dataBody.patientFirstName;
};
感謝
編輯 考慮到兩個答案已經提出了另外一個問題 - 是一個變量(屬性或對象)如果它附加到$範圍,則認爲是全局的?它可以在該控制器的任何功能中訪問,但只要在完全不同的控制器中調用 - 是的,它可以?
確認/拒絕任何人?
看來,將變量分配給$ scope全局對於我的測試來說被認爲是有效的。
。不是在我的測試中 - 我實際上沒有複製和粘貼上面的代碼 - 只是輸入它,所以這就是爲什麼它不在那裏。 – Katana24 2014-10-17 09:26:55