Angular Directive将模板分配给Body,但保留相同的范围/控制器

时间:2015-07-08 23:24:16

标签: javascript angularjs directive

我一直在研究加载指令模板的最佳实践,并将其分配给仅使用一个指令/模板的document.body。

我有一个用于搜索的文本框,当文本框被聚焦时,应该会出现一个弹出窗口。我知道,这听起来很熟悉,但我想自定义弹出窗口中显示的值,这就是我需要的模板...

因此,我希望观察搜索输入中的更改,并在已添加到正文中的模板中查看结果(并将其全部保存在一个指令/提供程序中)。
实现这种行为的最佳做法是什么?我一直在寻找几个小时,但我找不到合适的解决方案。

app.directive("rdSearch", [
    function () {
        return {
            restrict: 'A',
            scope: {
                onSearch: "=onSearch" // callback for processing search-query
            },
            //templateUrl: window.baseUrl + "some url"
            replace: true,
            link: ["$scope", function (scope) { }],
            controller: ["$scope", function (scope) { }]
        };
    }
]);

提前致谢!

修改
是否可以使用提供者/工厂来查看更改复选框并在弹出模板中更新结果?

1 个答案:

答案 0 :(得分:0)

好的,我可能会错过理解您的问题,但是如果您想将指令模板附加到您的身体上,您可以使用链接功能来完成:

public async Task<IEnumerable<SomeObject>> GetSqlDataReader1(int recordCount)
{
    using (var sqlCon = new SqlConnection(ConnectionString))
    using (var command = new SqlCommand("sp_GetData", sqlCon))
    {
        command.Parameters.Add(new SqlParameter("@recordCount", recordCount));
        command.CommandType = System.Data.CommandType.StoredProcedure;

        sqlCon.Open();                
        var rdr = await command.ExecuteReaderAsync();
        while (rdr.Read())
        {
             yield return new SomeObject() {Field1 = rdr[1], Field2 = rdr[2], etc};
        }
    }
}