2017-02-10 54 views
-1

UPDATE:這是一個"X Y problem"。我試圖做到這一點的方式是回答in this answer的問題是一個確切的重複。然而,我最好用ng-bind來實現我的實際目標,而不是用手重新設計一個kludgey假的單向綁定機制。從腳本標記獲取角度控制器

-

在下面的代碼,controller未在ready()回調定義。我真的不認爲這會是。

這裏的意圖是讓控制器在標題發生變化(簡單)時「引發事件」,並在發生這種情況時使用HTML更新document.title。問題是,HTML有沒有辦法讓控制器實現這個目標?

<html 
     ng-app="foo" 
     ng-controller="FooController as controller" 
     > 
<head> 
    <title>Default Title</title> 
    <script src="http://code.angularjs.org/snapshot/angular.min.js"></script> 

    <script src="foo.js"></script> 

    <script type="text/javascript"> 
     angular.element(window.document.body).ready(
      function() { 
       // This does get called 
       //alert('test'); 

       // controller isn't defined, not too surprisingly. 
       controller.titleChanged = function (title) { 
        //alert(title) 
        document.title = title; 
       }; 
      }); 
    </script> 
</head> 

我可以設置標題是這樣的:

<title>{{controller.title}}</title> 

......但後來我看到{{controller.title}}在我的瀏覽器歷史記錄,而不是一個有意義的標題,而據我瞭解這亦是一個搜索引擎會看到。

當然,我可以讓控制器將新標題分配給document.title,而現在這就是我正在做的事情,但我更喜歡讓控制器無視視圖。

+1

try'' –

+1

[This](http://stackoverflow.com/questions/16709373/angularjs-how-to-call-controller-function-from-控制器外部組件/#answer-16737459)可能是您的問題的答案。 – Korte

+0

@IhorKorotenko這是完美的。如果你想把它作爲答案,我會接受它。 –

回答

1

而不是插值使用ng-bind指令。