2014-01-27 83 views
6

我有以下主要視圖AngularJS - NG-包括NG-控制器和範圍不結合

<div ng-include="'otions.html'"></div> 

和options.html具有以下

<div ng-controller="OptionsController">Options</div> 
<input type="text" ng-model="keyword" value="{{keyword}}" /> 
<button ng-click="search()">Search</button> 

但 「關鍵字」 未結合OptionsController中的範圍。

app.controller('OptionsController', 
       ['$scope', function($scope) { 

    $scope.keyword = "all"; 
    $scope.search = function() { 
    console.log("hello") 
    }; 

}]); 

當我點擊該按鈕時,我沒有看到hello和關鍵字all沒有出現在輸入文本。

我試圖移動NG-控制器部分如下

<div ng-controller="OptionsController" ng-include="'otions.html'"></div> 

和事物正常工作。

我通過AngularJS - losing scope when using ng-include - 和我認爲答案閱讀我的問題是相關的,但只需要一些更多的解釋來承擔正在發生的事情。

+0

不知道這是否是一個錯字這裏,但也在你的來源:你包括的文件是引用爲'otions.html'而不是'options.html' – thomaux

+0

在你的你只需爲第一個'div'指定ng-controller,所以你的輸入和按鈕不在你的控制器的範圍內。可能是一個錯字。如果不是,那麼這可能是一個原因。 – GRaAL

+0

哦不。傻我。 – ericbae

回答

6

你應該寫options.html這樣的:

<div ng-controller="OptionsController">Options 
<input type="text" ng-model="keyword" value="{{keyword}}" /> 
<button ng-click="search()">Search</button> 
</div> 

OptionsController應在外部html元素付諸表決。

+0

好,我錯過了。在原始html中,輸入它在用控制器標記的div之外,因此scope變量不存在。 –

0

我臉上有同樣的問題,

在主標籤將是做工精細,但是,當綁定一些數據nav.html它不能正常工作。

發現這個鏈接

AngularJS - losing scope when using ng-include

裏面包括其工作範圍內的孩子。 更好的選擇來創建自定義指令其簡單的解決方案