我的目標是通過元素指令輸出一個值(來自服務),使得html看起來像這樣<msg msg="alertMsg"></msg>
,並從服務中彈出一個值。通過角度指令輸出服務屬性值
這裏是我的代碼至今:
app.directive("msg", ['MsgService', function(MsgService) {
return {
restrict: "E",
scope: {//something here to pass MsgService to template },
template: 'Message:{{MsgService.getAlertMsg()}}'
};
}]);
app.service('MsgService', function() {
this.alertMsg = 'default';
this.getAlertMsg = function(){
return this.alertMsg;
};
this.setAlertMsg = function(string) {
this.alertMsg = string;
};
});
HTML將會解析/編譯成...
<msg msg="alertMsg">Message: default</msg>
我需要什麼其他的代碼?
如果服務不能直接使用,我應該通過控制器訪問它嗎?
app.directive("msg", function() {
return {
restrict: "E",
scope: {
getMsg: '&msg'
},
controller: 'MsgController',
template:'Message:{{getMsg()}}'
};
}]);
app.controller('MsgController', ['MsgService' , function(MsgService){
this.getAlertMsg = function(){
return MsgService.getAlertMsg();
};
}]);
HTML將會解析/編譯成...
<msg msg="getAlertMsg()">Message: default</msg>
對不起,代碼或功能使用任何錯誤,我是相當新的角度。
如何在鏈接/你的指令控制器函數你說angular.extend(範圍,MsgService)? – 2014-08-29 19:51:06
我甚至不知道這個功能是否存在......我不明白它的意思。 – JerryA 2014-08-29 19:53:41
你的問題是什麼?上述指令代碼似乎工作正常。 – tommybananas 2014-08-29 20:25:19